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