x86-64.s revision 7aef62ff8c72506cc9b77333d25f4aa8aa9cf9fe
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: movzbq	(%rsp), %rsi
652// CHECK:  encoding: [0x48,0x0f,0xb6,0x34,0x24]
653        movzx 0(%rsp), %rsi
654
655
656// rdar://7873482
657// CHECK: [0x65,0x8b,0x04,0x25,0x7c,0x00,0x00,0x00]
658        movl	%gs:124, %eax
659
660// CHECK: jmpq *8(%rax)
661// CHECK:   encoding: [0xff,0x60,0x08]
662	jmp	*8(%rax)
663
664// CHECK: btq $61, -216(%rbp)
665// CHECK:   encoding: [0x48,0x0f,0xba,0xa5,0x28,0xff,0xff,0xff,0x3d]
666	btq	$61, -216(%rbp)
667
668
669// rdar://8061602
670L1:
671  jecxz L1
672// CHECK: jecxz L1
673// CHECK:   encoding: [0x67,0xe3,A]
674  jrcxz L1
675// CHECK: jrcxz L1
676// CHECK:   encoding: [0xe3,A]
677
678// PR8061
679xchgl   368(%rax),%ecx
680// CHECK: xchgl	%ecx, 368(%rax)
681xchgl   %ecx, 368(%rax)
682// CHECK: xchgl	%ecx, 368(%rax)
683
684// rdar://8407548
685xchg	0xdeadbeef(%rbx,%rcx,8),%bl
686// CHECK: xchgb	%bl, 3735928559(%rbx,%rcx,8)
687
688
689
690// PR7254
691lock  incl 1(%rsp)
692// CHECK: lock
693// CHECK: incl 1(%rsp)
694
695// rdar://8033482
696rep movsl
697// CHECK: rep
698// CHECK: encoding: [0xf3]
699// CHECK: movsl
700// CHECK: encoding: [0xa5]
701
702
703// rdar://8403974
704iret
705// CHECK: iretl
706// CHECK: encoding: [0xcf]
707iretw
708// CHECK: iretw
709// CHECK: encoding: [0x66,0xcf]
710iretl
711// CHECK: iretl
712// CHECK: encoding: [0xcf]
713iretq
714// CHECK: iretq
715// CHECK: encoding: [0x48,0xcf]
716
717// rdar://8416805
718// CHECK: retw	$31438
719// CHECK:  encoding: [0x66,0xc2,0xce,0x7a]
720        	retw	$0x7ace
721
722// CHECK: lretw	$31438
723// CHECK:  encoding: [0x66,0xca,0xce,0x7a]
724        	lretw	$0x7ace
725
726// rdar://8403907
727sysret
728// CHECK: sysretl
729// CHECK: encoding: [0x0f,0x07]
730sysretl
731// CHECK: sysretl
732// CHECK: encoding: [0x0f,0x07]
733sysretq
734// CHECK: sysretq
735// CHECK: encoding: [0x48,0x0f,0x07]
736
737// rdar://8407242
738push %fs
739// CHECK: pushq	%fs
740// CHECK: encoding: [0x0f,0xa0]
741push %gs
742// CHECK: pushq	%gs
743// CHECK: encoding: [0x0f,0xa8]
744
745pushw %fs
746// CHECK: pushw	%fs
747// CHECK: encoding: [0x66,0x0f,0xa0]
748pushw %gs
749// CHECK: pushw	%gs
750// CHECK: encoding: [0x66,0x0f,0xa8]
751
752
753pop %fs
754// CHECK: popq	%fs
755// CHECK: encoding: [0x0f,0xa1]
756pop %gs
757// CHECK: popq	%gs
758// CHECK: encoding: [0x0f,0xa9]
759
760popw %fs
761// CHECK: popw	%fs
762// CHECK: encoding: [0x66,0x0f,0xa1]
763popw %gs
764// CHECK: popw	%gs
765// CHECK: encoding: [0x66,0x0f,0xa9]
766
767// rdar://8438816
768fildq -8(%rsp)
769fildll -8(%rsp)
770// CHECK: fildll	-8(%rsp)
771// CHECK: encoding: [0xdf,0x6c,0x24,0xf8]
772// CHECK: fildll	-8(%rsp)
773// CHECK: encoding: [0xdf,0x6c,0x24,0xf8]
774
775// CHECK: callq a
776        callq a
777
778// CHECK: leaq	-40(%rbp), %r15
779	leaq	-40(%rbp), %r15
780
781
782
783// rdar://8013734 - Alias dr6=db6
784mov %dr6, %rax
785mov %db6, %rax
786// CHECK: movq	%dr6, %rax
787// CHECK: movq	%dr6, %rax
788
789
790// INC/DEC encodings.
791incb %al  // CHECK:	incb	%al # encoding: [0xfe,0xc0]
792incw %ax  // CHECK:	incw	%ax # encoding: [0x66,0xff,0xc0]
793incl %eax // CHECK:	incl	%eax # encoding: [0xff,0xc0]
794decb %al  // CHECK:	decb	%al # encoding: [0xfe,0xc8]
795decw %ax  // CHECK:	decw	%ax # encoding: [0x66,0xff,0xc8]
796decl %eax // CHECK:	decl	%eax # encoding: [0xff,0xc8]
797
798