Implement the data16 prefix.
[llvm.git] / test / MC / X86 / x86-64.s
blob17f00faafc0068654cad42ae171124d819853ee7
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
6 // Suffix inference:
8 // CHECK: addl $0, %eax
9 add $0, %eax
10 // CHECK: addb $255, %al
11 add $0xFF, %al
12 // CHECK: orq %rax, %rdx
13 or %rax, %rdx
14 // CHECK: shlq $3, %rax
15 shl $3, %rax
18 // CHECK: subb %al, %al
19 subb %al, %al
21 // CHECK: addl $24, %eax
22 addl $24, %eax
24 // CHECK: movl %eax, 10(%ebp)
25 movl %eax, 10(%ebp)
26 // CHECK: movl %eax, 10(%ebp,%ebx)
27 movl %eax, 10(%ebp, %ebx)
28 // CHECK: movl %eax, 10(%ebp,%ebx,4)
29 movl %eax, 10(%ebp, %ebx, 4)
30 // CHECK: movl %eax, 10(,%ebx,4)
31 movl %eax, 10(, %ebx, 4)
33 // CHECK: movl 0, %eax
34 movl 0, %eax
35 // CHECK: movl $0, %eax
36 movl $0, %eax
38 // CHECK: ret
39 ret
41 // FIXME: Check that this matches SUB32ri8
42 // CHECK: subl $1, %eax
43 subl $1, %eax
45 // FIXME: Check that this matches SUB32ri8
46 // CHECK: subl $-1, %eax
47 subl $-1, %eax
49 // FIXME: Check that this matches SUB32ri
50 // CHECK: subl $256, %eax
51 subl $256, %eax
53 // FIXME: Check that this matches XOR64ri8
54 // CHECK: xorq $1, %rax
55 xorq $1, %rax
57 // FIXME: Check that this matches XOR64ri32
58 // CHECK: xorq $256, %rax
59 xorq $256, %rax
61 // FIXME: Check that this matches SUB8rr
62 // CHECK: subb %al, %bl
63 subb %al, %bl
65 // FIXME: Check that this matches SUB16rr
66 // CHECK: subw %ax, %bx
67 subw %ax, %bx
69 // FIXME: Check that this matches SUB32rr
70 // CHECK: subl %eax, %ebx
71 subl %eax, %ebx
73 // FIXME: Check that this matches the correct instruction.
74 // CHECK: callq *%rax
75 call *%rax
77 // FIXME: Check that this matches the correct instruction.
78 // CHECK: shldl %cl, %eax, %ebx
79 shldl %cl, %eax, %ebx
81 // CHECK: shll $2, %eax
82 shll $2, %eax
84 // CHECK: shll $2, %eax
85 sall $2, %eax
87 // CHECK: rep
88 // CHECK: insb
89 rep;insb
91 // CHECK: rep
92 // CHECK: outsb
93 rep;outsb
95 // CHECK: rep
96 // CHECK: movsb
97 rep;movsb
100 // rdar://8470918
101 smovb // CHECK: movsb
102 smovw // CHECK: movsw
103 smovl // CHECK: movsl
104 smovq // CHECK: movsq
106 // rdar://8456361
107 // CHECK: rep
108 // CHECK: movsl
109 rep movsd
111 // CHECK: rep
112 // CHECK: lodsb
113 rep;lodsb
115 // CHECK: rep
116 // CHECK: stosb
117 rep;stosb
119 // NOTE: repz and repe have the same opcode as rep
120 // CHECK: rep
121 // CHECK: cmpsb
122 repz;cmpsb
124 // NOTE: repnz has the same opcode as repne
125 // CHECK: repne
126 // CHECK: cmpsb
127 repnz;cmpsb
129 // NOTE: repe and repz have the same opcode as rep
130 // CHECK: rep
131 // CHECK: scasb
132 repe;scasb
134 // CHECK: repne
135 // CHECK: scasb
136 repne;scasb
138 // CHECK: lock
139 // CHECK: cmpxchgb %al, (%ebx)
140 lock;cmpxchgb %al, 0(%ebx)
142 // CHECK: cs
143 // CHECK: movb (%eax), %al
144 cs;movb 0(%eax), %al
146 // CHECK: ss
147 // CHECK: movb (%eax), %al
148 ss;movb 0(%eax), %al
150 // CHECK: ds
151 // CHECK: movb (%eax), %al
152 ds;movb 0(%eax), %al
154 // CHECK: es
155 // CHECK: movb (%eax), %al
156 es;movb 0(%eax), %al
158 // CHECK: fs
159 // CHECK: movb (%eax), %al
160 fs;movb 0(%eax), %al
162 // CHECK: gs
163 // CHECK: movb (%eax), %al
164 gs;movb 0(%eax), %al
166 // CHECK: fadd %st(0)
167 // CHECK: fadd %st(1)
168 // CHECK: fadd %st(7)
170 fadd %st(0)
171 fadd %st(1)
172 fadd %st(7)
174 // CHECK: leal 0, %eax
175 leal 0, %eax
177 // rdar://7986634 - Insensitivity on opcodes.
178 // CHECK: int3
179 INT3
182 // Allow scale factor without index register.
183 // CHECK: movaps %xmm3, (%esi)
184 // CHECK-STDERR: warning: scale factor without index register is ignored
185 movaps %xmm3, (%esi, 2)
187 // CHECK: imull $12, %eax, %eax
188 imul $12, %eax
190 // CHECK: imull %ecx, %eax
191 imull %ecx, %eax
194 // rdar://8208481
195 // CHECK: outb %al, $161
196 outb %al, $161
197 // CHECK: outw %ax, $128
198 outw %ax, $128
199 // CHECK: inb $161, %al
200 inb $161, %al
202 // rdar://8017621
203 // CHECK: pushq $1
204 push $1
206 // rdar://8017530
207 // CHECK: sldtw 4
208 sldt 4
210 // rdar://8208499
211 // CHECK: cmovnew %bx, %ax
212 cmovnz %bx, %ax
213 // CHECK: cmovneq %rbx, %rax
214 cmovnzq %rbx, %rax
217 // rdar://8407928
218 // CHECK: inb $127, %al
219 // CHECK: inw %dx, %ax
220 // CHECK: outb %al, $127
221 // CHECK: outw %ax, %dx
222 // CHECK: inl %dx, %eax
223 inb $0x7f
224 inw %dx
225 outb $0x7f
226 outw %dx
227 inl %dx
230 // PR8114
231 // CHECK: outb %al, %dx
232 // CHECK: outw %ax, %dx
233 // CHECK: outl %eax, %dx
235 out %al, (%dx)
236 out %ax, (%dx)
237 outl %eax, (%dx)
240 // rdar://8431422
242 // CHECK: fxch %st(1)
243 // CHECK: fucom %st(1)
244 // CHECK: fucomp %st(1)
245 // CHECK: faddp %st(1)
246 // CHECK: faddp %st(0)
247 // CHECK: fsubp %st(1)
248 // CHECK: fsubrp %st(1)
249 // CHECK: fmulp %st(1)
250 // CHECK: fdivp %st(1)
251 // CHECK: fdivrp %st(1)
253 fxch
254 fucom
255 fucomp
256 faddp
257 faddp %st
258 fsubp
259 fsubrp
260 fmulp
261 fdivp
262 fdivrp
264 // CHECK: fcomi %st(1)
265 // CHECK: fcomi %st(2)
266 // CHECK: fucomi %st(1)
267 // CHECK: fucomi %st(2)
268 // CHECK: fucomi %st(2)
270 fcomi
271 fcomi %st(2)
272 fucomi
273 fucomi %st(2)
274 fucomi %st(2), %st
276 // CHECK: fnstsw %ax
277 // CHECK: fnstsw %ax
278 // CHECK: fnstsw %ax
279 // CHECK: fnstsw %ax
281 fnstsw
282 fnstsw %ax
283 fnstsw %eax
284 fnstsw %al
286 // rdar://8431880
287 // CHECK: rclb %bl
288 // CHECK: rcll 3735928559(%ebx,%ecx,8)
289 // CHECK: rcrl %ecx
290 // CHECK: rcrl 305419896
291 rcl %bl
292 rcll 0xdeadbeef(%ebx,%ecx,8)
293 rcr %ecx
294 rcrl 0x12345678
296 rclb %bl // CHECK: rclb %bl # encoding: [0xd0,0xd3]
297 rclb $1, %bl // CHECK: rclb %bl # encoding: [0xd0,0xd3]
298 rclb $2, %bl // CHECK: rclb $2, %bl # encoding: [0xc0,0xd3,0x02]
300 // rdar://8418316
301 // CHECK: shldw $1, %bx, %bx
302 // CHECK: shldw $1, %bx, %bx
303 // CHECK: shrdw $1, %bx, %bx
304 // CHECK: shrdw $1, %bx, %bx
306 shld %bx,%bx
307 shld $1, %bx,%bx
308 shrd %bx,%bx
309 shrd $1, %bx,%bx
311 // CHECK: sldtl %ecx
312 // CHECK: encoding: [0x0f,0x00,0xc1]
313 // CHECK: sldtw %cx
314 // CHECK: encoding: [0x66,0x0f,0x00,0xc1]
316 sldt %ecx
317 sldt %cx
319 // CHECK: lcalll *3135175374
320 // CHECK: ljmpl *3135175374
321 lcall *0xbadeface
322 ljmp *0xbadeface
325 // rdar://8444631
326 // CHECK: enter $31438, $0
327 // CHECK: encoding: [0xc8,0xce,0x7a,0x00]
328 // CHECK: enter $31438, $1
329 // CHECK: encoding: [0xc8,0xce,0x7a,0x01]
330 // CHECK: enter $31438, $127
331 // CHECK: encoding: [0xc8,0xce,0x7a,0x7f]
332 enter $0x7ace,$0
333 enter $0x7ace,$1
334 enter $0x7ace,$0x7f
337 // rdar://8456364
338 // CHECK: movw %cs, %ax
339 mov %CS, %ax
341 // rdar://8456391
342 fcmovb %st(1), %st(0) // CHECK: fcmovb %st(1), %st(0)
343 fcmove %st(1), %st(0) // CHECK: fcmove %st(1), %st(0)
344 fcmovbe %st(1), %st(0) // CHECK: fcmovbe %st(1), %st(0)
345 fcmovu %st(1), %st(0) // CHECK: fcmovu %st(1), %st(0)
347 fcmovnb %st(1), %st(0) // CHECK: fcmovnb %st(1), %st(0)
348 fcmovne %st(1), %st(0) // CHECK: fcmovne %st(1), %st(0)
349 fcmovnbe %st(1), %st(0) // CHECK: fcmovnbe %st(1), %st(0)
350 fcmovnu %st(1), %st(0) // CHECK: fcmovnu %st(1), %st(0)
352 fcmovnae %st(1), %st(0) // CHECK: fcmovb %st(1), %st(0)
353 fcmovna %st(1), %st(0) // CHECK: fcmovbe %st(1), %st(0)
355 fcmovae %st(1), %st(0) // CHECK: fcmovnb %st(1), %st(0)
356 fcmova %st(1), %st(0) // CHECK: fcmovnbe %st(1), %st(0)
358 // rdar://8456417
359 .byte 88 + 1 & 15 // CHECK: .byte 9
361 // rdar://8456412
362 mov %rdx, %cr0
363 // CHECK: movq %rdx, %cr0
364 // CHECK: encoding: [0x0f,0x22,0xc2]
365 mov %rdx, %cr4
366 // CHECK: movq %rdx, %cr4
367 // CHECK: encoding: [0x0f,0x22,0xe2]
368 mov %rdx, %cr8
369 // CHECK: movq %rdx, %cr8
370 // CHECK: encoding: [0x44,0x0f,0x22,0xc2]
371 mov %rdx, %cr15
372 // CHECK: movq %rdx, %cr15
373 // CHECK: encoding: [0x44,0x0f,0x22,0xfa]
375 // rdar://8456371 - Handle commutable instructions written backward.
376 // CHECK: faddp %st(1)
377 // CHECK: fmulp %st(2)
378 faddp %st, %st(1)
379 fmulp %st, %st(2)
381 // rdar://8468087 - Encode these accurately, they are not synonyms.
382 // CHECK: fmul %st(0), %st(1)
383 // CHECK: encoding: [0xdc,0xc9]
384 // CHECK: fmul %st(1)
385 // CHECK: encoding: [0xd8,0xc9]
386 fmul %st, %st(1)
387 fmul %st(1), %st
389 // CHECK: fadd %st(0), %st(1)
390 // CHECK: encoding: [0xdc,0xc1]
391 // CHECK: fadd %st(1)
392 // CHECK: encoding: [0xd8,0xc1]
393 fadd %st, %st(1)
394 fadd %st(1), %st
397 // rdar://8416805
398 // CHECK: xorb %al, %al
399 // CHECK: encoding: [0x30,0xc0]
400 // CHECK: xorw %di, %di
401 // CHECK: encoding: [0x66,0x31,0xff]
402 // CHECK: xorl %esi, %esi
403 // CHECK: encoding: [0x31,0xf6]
404 // CHECK: xorq %rsi, %rsi
405 // CHECK: encoding: [0x48,0x31,0xf6]
406 clrb %al
407 clr %di
408 clr %esi
409 clr %rsi
411 // rdar://8456378
412 cltq // CHECK: cltq
413 cdqe // CHECK: cltq
414 cwde // CHECK: cwtl
415 cwtl // CHECK: cwtl
417 // rdar://8416805
418 cbw // CHECK: cbtw
419 cwd // CHECK: cwtd
420 cdq // CHECK: cltd
422 // rdar://8456378 and PR7557 - fstsw
423 fstsw %ax
424 // CHECK: wait
425 // CHECK: fnstsw %ax
426 fstsw (%rax)
427 // CHECK: wait
428 // CHECK: fnstsw (%rax)
430 // PR8259
431 fstcw (%rsp)
432 // CHECK: wait
433 // CHECK: fnstcw (%rsp)
435 // PR8259
436 fstcw (%rsp)
437 // CHECK: wait
438 // CHECK: fnstcw (%rsp)
440 // PR8258
441 finit
442 // CHECK: wait
443 // CHECK: fninit
445 fsave 32493
446 // CHECK: wait
447 // CHECK: fnsave 32493
450 // rdar://8456382 - cvtsd2si support.
451 cvtsd2si %xmm1, %rax
452 // CHECK: cvtsd2siq %xmm1, %rax
453 // CHECK: encoding: [0xf2,0x48,0x0f,0x2d,0xc1]
454 cvtsd2si %xmm1, %eax
455 // CHECK: cvtsd2sil %xmm1, %eax
456 // CHECK: encoding: [0xf2,0x0f,0x2d,0xc1]
458 cvtsd2siq %xmm0, %rax // CHECK: cvtsd2siq %xmm0, %rax
459 cvtsd2sil %xmm0, %eax // CHECK: cvtsd2sil %xmm0, %eax
460 cvtsd2si %xmm0, %rax // CHECK: cvtsd2siq %xmm0, %rax
463 cvttpd2dq %xmm1, %xmm0 // CHECK: cvttpd2dq %xmm1, %xmm0
464 cvttpd2dq (%rax), %xmm0 // CHECK: cvttpd2dq (%rax), %xmm0
466 cvttps2dq %xmm1, %xmm0 // CHECK: cvttps2dq %xmm1, %xmm0
467 cvttps2dq (%rax), %xmm0 // CHECK: cvttps2dq (%rax), %xmm0
469 // rdar://8456376 - llvm-mc rejects 'roundss'
470 roundss $0xE, %xmm0, %xmm0 // CHECK: encoding: [0x66,0x0f,0x3a,0x0a,0xc0,0x0e]
471 roundps $0xE, %xmm0, %xmm0 // CHECK: encoding: [0x66,0x0f,0x3a,0x08,0xc0,0x0e]
472 roundsd $0xE, %xmm0, %xmm0 // CHECK: encoding: [0x66,0x0f,0x3a,0x0b,0xc0,0x0e]
473 roundpd $0xE, %xmm0, %xmm0 // CHECK: encoding: [0x66,0x0f,0x3a,0x09,0xc0,0x0e]
476 // rdar://8482675 - 32-bit mem operand support in 64-bit mode (0x67 prefix)
477 leal 8(%eax), %esi
478 // CHECK: leal 8(%eax), %esi
479 // CHECK: encoding: [0x67,0x8d,0x70,0x08]
480 leaq 8(%eax), %rsi
481 // CHECK: leaq 8(%eax), %rsi
482 // CHECK: encoding: [0x67,0x48,0x8d,0x70,0x08]
483 leaq 8(%rax), %rsi
484 // CHECK: leaq 8(%rax), %rsi
485 // CHECK: encoding: [0x48,0x8d,0x70,0x08]
488 cvttpd2dq 0xdeadbeef(%ebx,%ecx,8),%xmm5
489 // CHECK: cvttpd2dq 3735928559(%ebx,%ecx,8), %xmm5
490 // CHECK: encoding: [0x67,0x66,0x0f,0xe6,0xac,0xcb,0xef,0xbe,0xad,0xde]
492 // rdar://8490728 - llvm-mc rejects 'movmskpd'
493 movmskpd %xmm6, %rax
494 // CHECK: movmskpd %xmm6, %rax
495 // CHECK: encoding: [0x66,0x48,0x0f,0x50,0xc6]
496 movmskpd %xmm6, %eax
497 // CHECK: movmskpd %xmm6, %eax
498 // CHECK: encoding: [0x66,0x0f,0x50,0xc6]
500 // rdar://8491845 - Gas supports commuted forms of non-commutable instructions.
501 fdivrp %st(0), %st(1) // CHECK: encoding: [0xde,0xf9]
502 fdivrp %st(1), %st(0) // CHECK: encoding: [0xde,0xf9]
504 fsubrp %ST(0), %ST(1) // CHECK: encoding: [0xde,0xe9]
505 fsubrp %ST(1), %ST(0) // CHECK: encoding: [0xde,0xe9]
508 movl foo(%rip), %eax
509 // CHECK: movl foo(%rip), %eax
510 // CHECK: encoding: [0x8b,0x05,A,A,A,A]
511 // CHECK: fixup A - offset: 2, value: foo-4, kind: reloc_riprel_4byte
513 movb $12, foo(%rip)
514 // CHECK: movb $12, foo(%rip)
515 // CHECK: encoding: [0xc6,0x05,A,A,A,A,0x0c]
516 // CHECK: fixup A - offset: 2, value: foo-5, kind: reloc_riprel_4byte
518 movw $12, foo(%rip)
519 // CHECK: movw $12, foo(%rip)
520 // CHECK: encoding: [0x66,0xc7,0x05,A,A,A,A,0x0c,0x00]
521 // CHECK: fixup A - offset: 3, value: foo-6, kind: reloc_riprel_4byte
523 movl $12, foo(%rip)
524 // CHECK: movl $12, foo(%rip)
525 // CHECK: encoding: [0xc7,0x05,A,A,A,A,0x0c,0x00,0x00,0x00]
526 // CHECK: fixup A - offset: 2, value: foo-8, kind: reloc_riprel_4byte
528 movq $12, foo(%rip)
529 // CHECK: movq $12, foo(%rip)
530 // CHECK: encoding: [0x48,0xc7,0x05,A,A,A,A,0x0c,0x00,0x00,0x00]
531 // CHECK: fixup A - offset: 3, value: foo-8, kind: reloc_riprel_4byte
533 // CHECK: addq $-424, %rax
534 // CHECK: encoding: [0x48,0x05,0x58,0xfe,0xff,0xff]
535 addq $-424, %rax
538 // CHECK: movq _foo@GOTPCREL(%rip), %rax
539 // CHECK: encoding: [0x48,0x8b,0x05,A,A,A,A]
540 // CHECK: fixup A - offset: 3, value: _foo@GOTPCREL-4, kind: reloc_riprel_4byte_movq_load
541 movq _foo@GOTPCREL(%rip), %rax
543 // CHECK: movq _foo@GOTPCREL(%rip), %r14
544 // CHECK: encoding: [0x4c,0x8b,0x35,A,A,A,A]
545 // CHECK: fixup A - offset: 3, value: _foo@GOTPCREL-4, kind: reloc_riprel_4byte_movq_load
546 movq _foo@GOTPCREL(%rip), %r14
549 // CHECK: movq (%r13,%rax,8), %r13
550 // CHECK: encoding: [0x4d,0x8b,0x6c,0xc5,0x00]
551 movq 0x00(%r13,%rax,8),%r13
553 // CHECK: testq %rax, %rbx
554 // CHECK: encoding: [0x48,0x85,0xd8]
555 testq %rax, %rbx
557 // CHECK: cmpq %rbx, %r14
558 // CHECK: encoding: [0x49,0x39,0xde]
559 cmpq %rbx, %r14
561 // rdar://7947167
563 movsq
564 // CHECK: movsq
565 // CHECK: encoding: [0x48,0xa5]
567 movsl
568 // CHECK: movsl
569 // CHECK: encoding: [0xa5]
571 stosq
572 // CHECK: stosq
573 // CHECK: encoding: [0x48,0xab]
574 stosl
575 // CHECK: stosl
576 // CHECK: encoding: [0xab]
579 // Not moffset forms of moves, they are x86-32 only! rdar://7947184
580 movb 0, %al // CHECK: movb 0, %al # encoding: [0x8a,0x04,0x25,0x00,0x00,0x00,0x00]
581 movw 0, %ax // CHECK: movw 0, %ax # encoding: [0x66,0x8b,0x04,0x25,0x00,0x00,0x00,0x00]
582 movl 0, %eax // CHECK: movl 0, %eax # encoding: [0x8b,0x04,0x25,0x00,0x00,0x00,0x00]
584 // CHECK: pushfq # encoding: [0x9c]
585 pushf
586 // CHECK: pushfq # encoding: [0x9c]
587 pushfq
588 // CHECK: popfq # encoding: [0x9d]
589 popf
590 // CHECK: popfq # encoding: [0x9d]
591 popfq
593 // CHECK: movabsq $-281474976710654, %rax
594 // CHECK: encoding: [0x48,0xb8,0x02,0x00,0x00,0x00,0x00,0x00,0xff,0xff]
595 movabsq $0xFFFF000000000002, %rax
597 // CHECK: movabsq $-281474976710654, %rax
598 // CHECK: encoding: [0x48,0xb8,0x02,0x00,0x00,0x00,0x00,0x00,0xff,0xff]
599 movq $0xFFFF000000000002, %rax
601 // CHECK: movq $-65536, %rax
602 // CHECK: encoding: [0x48,0xc7,0xc0,0x00,0x00,0xff,0xff]
603 movq $0xFFFFFFFFFFFF0000, %rax
605 // CHECK: movq $-256, %rax
606 // CHECK: encoding: [0x48,0xc7,0xc0,0x00,0xff,0xff,0xff]
607 movq $0xFFFFFFFFFFFFFF00, %rax
609 // CHECK: movq $10, %rax
610 // CHECK: encoding: [0x48,0xc7,0xc0,0x0a,0x00,0x00,0x00]
611 movq $10, %rax
613 // rdar://8014869
615 // CHECK: ret
616 // CHECK: encoding: [0xc3]
617 retq
619 // CHECK: sete %al
620 // CHECK: encoding: [0x0f,0x94,0xc0]
621 setz %al
623 // CHECK: setne %al
624 // CHECK: encoding: [0x0f,0x95,0xc0]
625 setnz %al
627 // CHECK: je 0
628 // CHECK: encoding: [0x74,A]
629 jz 0
631 // CHECK: jne
632 // CHECK: encoding: [0x75,A]
633 jnz 0
635 // rdar://8017515
636 btq $0x01,%rdx
637 // CHECK: btq $1, %rdx
638 // CHECK: encoding: [0x48,0x0f,0xba,0xe2,0x01]
640 //rdar://8017633
641 // CHECK: movzbl %al, %esi
642 // CHECK: encoding: [0x0f,0xb6,0xf0]
643 movzx %al, %esi
645 // CHECK: movzbq %al, %rsi
646 // CHECK: encoding: [0x48,0x0f,0xb6,0xf0]
647 movzx %al, %rsi
649 // CHECK: movsbw %al, %ax
650 // CHECK: encoding: [0x66,0x0f,0xbe,0xc0]
651 movsx %al, %ax
653 // CHECK: movsbl %al, %eax
654 // CHECK: encoding: [0x0f,0xbe,0xc0]
655 movsx %al, %eax
657 // CHECK: movswl %ax, %eax
658 // CHECK: encoding: [0x0f,0xbf,0xc0]
659 movsx %ax, %eax
661 // CHECK: movsbq %bl, %rax
662 // CHECK: encoding: [0x48,0x0f,0xbe,0xc3]
663 movsx %bl, %rax
665 // CHECK: movswq %cx, %rax
666 // CHECK: encoding: [0x48,0x0f,0xbf,0xc1]
667 movsx %cx, %rax
669 // CHECK: movslq %edi, %rax
670 // CHECK: encoding: [0x48,0x63,0xc7]
671 movsx %edi, %rax
673 // CHECK: movzbw %al, %ax
674 // CHECK: encoding: [0x66,0x0f,0xb6,0xc0]
675 movzx %al, %ax
677 // CHECK: movzbl %al, %eax
678 // CHECK: encoding: [0x0f,0xb6,0xc0]
679 movzx %al, %eax
681 // CHECK: movzwl %ax, %eax
682 // CHECK: encoding: [0x0f,0xb7,0xc0]
683 movzx %ax, %eax
685 // CHECK: movzbq %bl, %rax
686 // CHECK: encoding: [0x48,0x0f,0xb6,0xc3]
687 movzx %bl, %rax
689 // CHECK: movzwq %cx, %rax
690 // CHECK: encoding: [0x48,0x0f,0xb7,0xc1]
691 movzx %cx, %rax
693 // CHECK: movsbw (%rax), %ax
694 // CHECK: encoding: [0x66,0x0f,0xbe,0x00]
695 movsx (%rax), %ax
697 // CHECK: movzbw (%rax), %ax
698 // CHECK: encoding: [0x66,0x0f,0xb6,0x00]
699 movzx (%rax), %ax
702 // rdar://7873482
703 // CHECK: [0x65,0x8b,0x04,0x25,0x7c,0x00,0x00,0x00]
704 movl %gs:124, %eax
706 // CHECK: jmpq *8(%rax)
707 // CHECK: encoding: [0xff,0x60,0x08]
708 jmp *8(%rax)
710 // CHECK: btq $61, -216(%rbp)
711 // CHECK: encoding: [0x48,0x0f,0xba,0xa5,0x28,0xff,0xff,0xff,0x3d]
712 btq $61, -216(%rbp)
715 // rdar://8061602
717 jecxz L1
718 // CHECK: jecxz L1
719 // CHECK: encoding: [0x67,0xe3,A]
720 jrcxz L1
721 // CHECK: jrcxz L1
722 // CHECK: encoding: [0xe3,A]
724 // PR8061
725 xchgl 368(%rax),%ecx
726 // CHECK: xchgl %ecx, 368(%rax)
727 xchgl %ecx, 368(%rax)
728 // CHECK: xchgl %ecx, 368(%rax)
730 // rdar://8407548
731 xchg 0xdeadbeef(%rbx,%rcx,8),%bl
732 // CHECK: xchgb %bl, 3735928559(%rbx,%rcx,8)
736 // PR7254
737 lock incl 1(%rsp)
738 // CHECK: lock
739 // CHECK: incl 1(%rsp)
741 // rdar://8033482
742 rep movsl
743 // CHECK: rep
744 // CHECK: encoding: [0xf3]
745 // CHECK: movsl
746 // CHECK: encoding: [0xa5]
749 // rdar://8403974
750 iret
751 // CHECK: iretl
752 // CHECK: encoding: [0xcf]
753 iretw
754 // CHECK: iretw
755 // CHECK: encoding: [0x66,0xcf]
756 iretl
757 // CHECK: iretl
758 // CHECK: encoding: [0xcf]
759 iretq
760 // CHECK: iretq
761 // CHECK: encoding: [0x48,0xcf]
763 // rdar://8416805
764 // CHECK: retw $31438
765 // CHECK: encoding: [0x66,0xc2,0xce,0x7a]
766 retw $0x7ace
768 // CHECK: lretw $31438
769 // CHECK: encoding: [0x66,0xca,0xce,0x7a]
770 lretw $0x7ace
772 // PR8592
773 lretq // CHECK: lretq # encoding: [0x48,0xcb]
774 lretl // CHECK: lretl # encoding: [0xcb]
775 lret // CHECK: lretl # encoding: [0xcb]
777 // rdar://8403907
778 sysret
779 // CHECK: sysretl
780 // CHECK: encoding: [0x0f,0x07]
781 sysretl
782 // CHECK: sysretl
783 // CHECK: encoding: [0x0f,0x07]
784 sysretq
785 // CHECK: sysretq
786 // CHECK: encoding: [0x48,0x0f,0x07]
788 // rdar://8407242
789 push %fs
790 // CHECK: pushq %fs
791 // CHECK: encoding: [0x0f,0xa0]
792 push %gs
793 // CHECK: pushq %gs
794 // CHECK: encoding: [0x0f,0xa8]
796 pushw %fs
797 // CHECK: pushw %fs
798 // CHECK: encoding: [0x66,0x0f,0xa0]
799 pushw %gs
800 // CHECK: pushw %gs
801 // CHECK: encoding: [0x66,0x0f,0xa8]
804 pop %fs
805 // CHECK: popq %fs
806 // CHECK: encoding: [0x0f,0xa1]
807 pop %gs
808 // CHECK: popq %gs
809 // CHECK: encoding: [0x0f,0xa9]
811 popw %fs
812 // CHECK: popw %fs
813 // CHECK: encoding: [0x66,0x0f,0xa1]
814 popw %gs
815 // CHECK: popw %gs
816 // CHECK: encoding: [0x66,0x0f,0xa9]
818 // rdar://8438816
819 fildq -8(%rsp)
820 fildll -8(%rsp)
821 // CHECK: fildll -8(%rsp)
822 // CHECK: encoding: [0xdf,0x6c,0x24,0xf8]
823 // CHECK: fildll -8(%rsp)
824 // CHECK: encoding: [0xdf,0x6c,0x24,0xf8]
826 // CHECK: callq a
827 callq a
829 // CHECK: leaq -40(%rbp), %r15
830 leaq -40(%rbp), %r15
834 // rdar://8013734 - Alias dr6=db6
835 mov %dr6, %rax
836 mov %db6, %rax
837 // CHECK: movq %dr6, %rax
838 // CHECK: movq %dr6, %rax
841 // INC/DEC encodings.
842 incb %al // CHECK: incb %al # encoding: [0xfe,0xc0]
843 incw %ax // CHECK: incw %ax # encoding: [0x66,0xff,0xc0]
844 incl %eax // CHECK: incl %eax # encoding: [0xff,0xc0]
845 decb %al // CHECK: decb %al # encoding: [0xfe,0xc8]
846 decw %ax // CHECK: decw %ax # encoding: [0x66,0xff,0xc8]
847 decl %eax // CHECK: decl %eax # encoding: [0xff,0xc8]
849 // rdar://8416805
850 // CHECK: lgdt 4(%rax)
851 // CHECK: encoding: [0x0f,0x01,0x50,0x04]
852 lgdt 4(%rax)
854 // CHECK: lgdt 4(%rax)
855 // CHECK: encoding: [0x0f,0x01,0x50,0x04]
856 lgdtq 4(%rax)
858 // CHECK: lidt 4(%rax)
859 // CHECK: encoding: [0x0f,0x01,0x58,0x04]
860 lidt 4(%rax)
862 // CHECK: lidt 4(%rax)
863 // CHECK: encoding: [0x0f,0x01,0x58,0x04]
864 lidtq 4(%rax)
866 // CHECK: sgdt 4(%rax)
867 // CHECK: encoding: [0x0f,0x01,0x40,0x04]
868 sgdt 4(%rax)
870 // CHECK: sgdt 4(%rax)
871 // CHECK: encoding: [0x0f,0x01,0x40,0x04]
872 sgdtq 4(%rax)
874 // CHECK: sidt 4(%rax)
875 // CHECK: encoding: [0x0f,0x01,0x48,0x04]
876 sidt 4(%rax)
878 // CHECK: sidt 4(%rax)
879 // CHECK: encoding: [0x0f,0x01,0x48,0x04]
880 sidtq 4(%rax)
883 // rdar://8208615
884 mov (%rsi), %gs // CHECK: movl (%rsi), %gs # encoding: [0x8e,0x2e]
885 mov %gs, (%rsi) // CHECK: movl %gs, (%rsi) # encoding: [0x8c,0x2e]
888 // rdar://8431864
889 div %bl,%al
890 div %bx,%ax
891 div %ecx,%eax
892 div 0xdeadbeef(%ebx,%ecx,8),%eax
893 div 0x45,%eax
894 div 0x7eed,%eax
895 div 0xbabecafe,%eax
896 div 0x12345678,%eax
897 idiv %bl,%al
898 idiv %bx,%ax
899 idiv %ecx,%eax
900 idiv 0xdeadbeef(%ebx,%ecx,8),%eax
901 idiv 0x45,%eax
902 idiv 0x7eed,%eax
903 idiv 0xbabecafe,%eax
904 idiv 0x12345678,%eax
906 // PR8524
907 movd %rax, %mm5 // CHECK: movd %rax, %mm5 # encoding: [0x48,0x0f,0x6e,0xe8]
908 movd %mm5, %rbx // CHECK: movd %mm5, %rbx # encoding: [0x48,0x0f,0x7e,0xeb]
909 movq %rax, %mm5 // CHECK: movd %rax, %mm5 # encoding: [0x48,0x0f,0x6e,0xe8]
910 movq %mm5, %rbx // CHECK: movd %mm5, %rbx # encoding: [0x48,0x0f,0x7e,0xeb]
912 rex64 // CHECK: rex64 # encoding: [0x48]
913 data16 // CHECK: data16 # encoding: [0x66]