x86-64.s revision 87f4a1a4331e40cbba28e829561759d146273840
16c1b3b1e32f960f44e47d8484510f5c5f8e5343fChris Lattner// RUN: llvm-mc -triple x86_64-unknown-unknown -show-encoding %s > %t 2> %t.err
2ee9102587e7f6fc95de9fc5731b341eeb9bfc3caDaniel Dunbar// RUN: FileCheck < %t %s
3ee9102587e7f6fc95de9fc5731b341eeb9bfc3caDaniel Dunbar// RUN: FileCheck --check-prefix=CHECK-STDERR < %t.err %s
4b6804e91267381427866dfc1ae3d88abd02ddf14Daniel Dunbar
527c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattner
627c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattner// Suffix inference:
727c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattner
827c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattner// CHECK: addl $0, %eax
927c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattner        add $0, %eax
1027c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattner// CHECK: addb $255, %al
1127c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattner        add $0xFF, %al
1227c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattner// CHECK: orq %rax, %rdx
1327c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattner        or %rax, %rdx
1427c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattner// CHECK: shlq $3, %rax
1527c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattner        shl $3, %rax
1627c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattner
1727c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattner
18c22e0b2443afdedb6d9b225b938ad404d63cdbe6Daniel Dunbar// CHECK: subb %al, %al
19022e2a84a867ba73fd0e6b89f61e56396f22620dDaniel Dunbar        subb %al, %al
20022e2a84a867ba73fd0e6b89f61e56396f22620dDaniel Dunbar
21c22e0b2443afdedb6d9b225b938ad404d63cdbe6Daniel Dunbar// CHECK: addl $24, %eax
22022e2a84a867ba73fd0e6b89f61e56396f22620dDaniel Dunbar        addl $24, %eax
23022e2a84a867ba73fd0e6b89f61e56396f22620dDaniel Dunbar
24c22e0b2443afdedb6d9b225b938ad404d63cdbe6Daniel Dunbar// CHECK: movl %eax, 10(%ebp)
25022e2a84a867ba73fd0e6b89f61e56396f22620dDaniel Dunbar        movl %eax, 10(%ebp)
26c22e0b2443afdedb6d9b225b938ad404d63cdbe6Daniel Dunbar// CHECK: movl %eax, 10(%ebp,%ebx)
27022e2a84a867ba73fd0e6b89f61e56396f22620dDaniel Dunbar        movl %eax, 10(%ebp, %ebx)
28c22e0b2443afdedb6d9b225b938ad404d63cdbe6Daniel Dunbar// CHECK: movl %eax, 10(%ebp,%ebx,4)
29022e2a84a867ba73fd0e6b89f61e56396f22620dDaniel Dunbar        movl %eax, 10(%ebp, %ebx, 4)
30c22e0b2443afdedb6d9b225b938ad404d63cdbe6Daniel Dunbar// CHECK: movl %eax, 10(,%ebx,4)
31022e2a84a867ba73fd0e6b89f61e56396f22620dDaniel Dunbar        movl %eax, 10(, %ebx, 4)
32b834f5d13d824dc4da2ce0df2aa8dffb697b8974Daniel Dunbar
33b834f5d13d824dc4da2ce0df2aa8dffb697b8974Daniel Dunbar// CHECK: movl 0, %eax
34b834f5d13d824dc4da2ce0df2aa8dffb697b8974Daniel Dunbar        movl 0, %eax
35b834f5d13d824dc4da2ce0df2aa8dffb697b8974Daniel Dunbar// CHECK: movl $0, %eax
36b834f5d13d824dc4da2ce0df2aa8dffb697b8974Daniel Dunbar        movl $0, %eax
37b834f5d13d824dc4da2ce0df2aa8dffb697b8974Daniel Dunbar
388a3ee718cdaa153e29c079548e6755184d5426e4Daniel Dunbar// CHECK: ret
398a3ee718cdaa153e29c079548e6755184d5426e4Daniel Dunbar        ret
408a3ee718cdaa153e29c079548e6755184d5426e4Daniel Dunbar
415fe6338ac859707f797bf6db6d043bb5f4d944a1Daniel Dunbar// FIXME: Check that this matches SUB32ri8
42c22e0b2443afdedb6d9b225b938ad404d63cdbe6Daniel Dunbar// CHECK: subl $1, %eax
435fe6338ac859707f797bf6db6d043bb5f4d944a1Daniel Dunbar        subl $1, %eax
445fe6338ac859707f797bf6db6d043bb5f4d944a1Daniel Dunbar
455fe6338ac859707f797bf6db6d043bb5f4d944a1Daniel Dunbar// FIXME: Check that this matches SUB32ri8
46c22e0b2443afdedb6d9b225b938ad404d63cdbe6Daniel Dunbar// CHECK: subl $-1, %eax
475fe6338ac859707f797bf6db6d043bb5f4d944a1Daniel Dunbar        subl $-1, %eax
485fe6338ac859707f797bf6db6d043bb5f4d944a1Daniel Dunbar
495fe6338ac859707f797bf6db6d043bb5f4d944a1Daniel Dunbar// FIXME: Check that this matches SUB32ri
50c22e0b2443afdedb6d9b225b938ad404d63cdbe6Daniel Dunbar// CHECK: subl $256, %eax
515fe6338ac859707f797bf6db6d043bb5f4d944a1Daniel Dunbar        subl $256, %eax
525fe6338ac859707f797bf6db6d043bb5f4d944a1Daniel Dunbar
5344f63f9335bfb487a2e94cbe20d2950bbdef840eDaniel Dunbar// FIXME: Check that this matches XOR64ri8
54c22e0b2443afdedb6d9b225b938ad404d63cdbe6Daniel Dunbar// CHECK: xorq $1, %rax
55ea6408f8cd17b065e414611e01a7133d118429e9Daniel Dunbar        xorq $1, %rax
565fe6338ac859707f797bf6db6d043bb5f4d944a1Daniel Dunbar
5744f63f9335bfb487a2e94cbe20d2950bbdef840eDaniel Dunbar// FIXME: Check that this matches XOR64ri32
58c22e0b2443afdedb6d9b225b938ad404d63cdbe6Daniel Dunbar// CHECK: xorq $256, %rax
59ea6408f8cd17b065e414611e01a7133d118429e9Daniel Dunbar        xorq $256, %rax
60ea6408f8cd17b065e414611e01a7133d118429e9Daniel Dunbar
61ea6408f8cd17b065e414611e01a7133d118429e9Daniel Dunbar// FIXME: Check that this matches SUB8rr
62c22e0b2443afdedb6d9b225b938ad404d63cdbe6Daniel Dunbar// CHECK: subb %al, %bl
63ea6408f8cd17b065e414611e01a7133d118429e9Daniel Dunbar        subb %al, %bl
64ea6408f8cd17b065e414611e01a7133d118429e9Daniel Dunbar
65ea6408f8cd17b065e414611e01a7133d118429e9Daniel Dunbar// FIXME: Check that this matches SUB16rr
66c22e0b2443afdedb6d9b225b938ad404d63cdbe6Daniel Dunbar// CHECK: subw %ax, %bx
67ea6408f8cd17b065e414611e01a7133d118429e9Daniel Dunbar        subw %ax, %bx
68ea6408f8cd17b065e414611e01a7133d118429e9Daniel Dunbar
69ea6408f8cd17b065e414611e01a7133d118429e9Daniel Dunbar// FIXME: Check that this matches SUB32rr
70c22e0b2443afdedb6d9b225b938ad404d63cdbe6Daniel Dunbar// CHECK: subl %eax, %ebx
71ea6408f8cd17b065e414611e01a7133d118429e9Daniel Dunbar        subl %eax, %ebx
72ea6408f8cd17b065e414611e01a7133d118429e9Daniel Dunbar
730db68f4e3a8be1641dbba72a41baa6ff1b5dd6afDaniel Dunbar// FIXME: Check that this matches the correct instruction.
74926f2bb3d8dd6f8b0198aa478828ee02914050f9Daniel Dunbar// CHECK: callq *%rax
750db68f4e3a8be1641dbba72a41baa6ff1b5dd6afDaniel Dunbar        call *%rax
761095f2ae261d231a63d329b0ebbf6eaf566ff429Daniel Dunbar
771095f2ae261d231a63d329b0ebbf6eaf566ff429Daniel Dunbar// FIXME: Check that this matches the correct instruction.
78c22e0b2443afdedb6d9b225b938ad404d63cdbe6Daniel Dunbar// CHECK: shldl %cl, %eax, %ebx
791095f2ae261d231a63d329b0ebbf6eaf566ff429Daniel Dunbar        shldl %cl, %eax, %ebx
80e7070e90066acc3460af1d6cac4036a80b0250b8Daniel Dunbar
81e7070e90066acc3460af1d6cac4036a80b0250b8Daniel Dunbar// CHECK: shll $2, %eax
82e7070e90066acc3460af1d6cac4036a80b0250b8Daniel Dunbar        shll $2, %eax
83e7070e90066acc3460af1d6cac4036a80b0250b8Daniel Dunbar
84e7070e90066acc3460af1d6cac4036a80b0250b8Daniel Dunbar// CHECK: shll $2, %eax
85e7070e90066acc3460af1d6cac4036a80b0250b8Daniel Dunbar        sall $2, %eax
8612ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby
8712ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby// CHECK: rep
8812ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby// CHECK: insb
8912ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby        rep;insb
9012ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby
9112ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby// CHECK: rep
9212ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby// CHECK: outsb
9312ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby        rep;outsb
9412ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby
9512ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby// CHECK: rep
9612ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby// CHECK: movsb
9712ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby        rep;movsb
9812ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby
99df967d613704d4e4f01ecce85c1846dfab4d9a1bChris Lattner
100df967d613704d4e4f01ecce85c1846dfab4d9a1bChris Lattner// rdar://8470918
101df967d613704d4e4f01ecce85c1846dfab4d9a1bChris Lattnersmovb // CHECK: movsb
102df967d613704d4e4f01ecce85c1846dfab4d9a1bChris Lattnersmovw // CHECK: movsw
103df967d613704d4e4f01ecce85c1846dfab4d9a1bChris Lattnersmovl // CHECK: movsl
104df967d613704d4e4f01ecce85c1846dfab4d9a1bChris Lattnersmovq // CHECK: movsq
105df967d613704d4e4f01ecce85c1846dfab4d9a1bChris Lattner
10661129252e44067ae112dc856c64c814344b7e7c9Chris Lattner// rdar://8456361
10761129252e44067ae112dc856c64c814344b7e7c9Chris Lattner// CHECK: rep
10861129252e44067ae112dc856c64c814344b7e7c9Chris Lattner// CHECK: movsl
10961129252e44067ae112dc856c64c814344b7e7c9Chris Lattner        rep movsd
11061129252e44067ae112dc856c64c814344b7e7c9Chris Lattner
11112ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby// CHECK: rep
11212ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby// CHECK: lodsb
11312ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby        rep;lodsb
11412ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby
11512ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby// CHECK: rep
11612ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby// CHECK: stosb
11712ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby        rep;stosb
11812ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby
11912ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby// NOTE: repz and repe have the same opcode as rep
12012ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby// CHECK: rep
12112ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby// CHECK: cmpsb
12212ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby        repz;cmpsb
12312ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby
12412ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby// NOTE: repnz has the same opcode as repne
12512ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby// CHECK: repne
12612ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby// CHECK: cmpsb
12712ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby        repnz;cmpsb
12812ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby
12912ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby// NOTE: repe and repz have the same opcode as rep
13012ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby// CHECK: rep
13112ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby// CHECK: scasb
13212ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby        repe;scasb
13312ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby
13412ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby// CHECK: repne
13512ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby// CHECK: scasb
13612ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby        repne;scasb
13712ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby
13812ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby// CHECK: lock
1399c60f534cbdec2ba58b269c4d624ae4d301ef73aDaniel Dunbar// CHECK: cmpxchgb %al, (%ebx)
14012ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby        lock;cmpxchgb %al, 0(%ebx)
14112ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby
14212ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby// CHECK: cs
1439c60f534cbdec2ba58b269c4d624ae4d301ef73aDaniel Dunbar// CHECK: movb (%eax), %al
14412ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby        cs;movb 0(%eax), %al
14512ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby
14612ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby// CHECK: ss
1479c60f534cbdec2ba58b269c4d624ae4d301ef73aDaniel Dunbar// CHECK: movb (%eax), %al
14812ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby        ss;movb 0(%eax), %al
14912ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby
15012ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby// CHECK: ds
1519c60f534cbdec2ba58b269c4d624ae4d301ef73aDaniel Dunbar// CHECK: movb (%eax), %al
15212ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby        ds;movb 0(%eax), %al
15312ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby
15412ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby// CHECK: es
1559c60f534cbdec2ba58b269c4d624ae4d301ef73aDaniel Dunbar// CHECK: movb (%eax), %al
15612ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby        es;movb 0(%eax), %al
15712ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby
15812ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby// CHECK: fs
1599c60f534cbdec2ba58b269c4d624ae4d301ef73aDaniel Dunbar// CHECK: movb (%eax), %al
16012ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby        fs;movb 0(%eax), %al
16112ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby
16212ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby// CHECK: gs
1639c60f534cbdec2ba58b269c4d624ae4d301ef73aDaniel Dunbar// CHECK: movb (%eax), %al
16412ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby        gs;movb 0(%eax), %al
16512ce0de4622df7bcc15ba6c8818b98c0b936876aKevin Enderby
166e16b0fc3cb607bd0b8240733e2fe829d78df3833Chris Lattner// CHECK: fadd %st(0)
167e16b0fc3cb607bd0b8240733e2fe829d78df3833Chris Lattner// CHECK: fadd %st(1)
168e16b0fc3cb607bd0b8240733e2fe829d78df3833Chris Lattner// CHECK: fadd %st(7)
169e16b0fc3cb607bd0b8240733e2fe829d78df3833Chris Lattner
170e16b0fc3cb607bd0b8240733e2fe829d78df3833Chris Lattnerfadd %st(0)
171e16b0fc3cb607bd0b8240733e2fe829d78df3833Chris Lattnerfadd %st(1)
172e16b0fc3cb607bd0b8240733e2fe829d78df3833Chris Lattnerfadd %st(7)
173c26ae5ab7e2d65b67c97524e66f50ce86445dec7Daniel Dunbar
174c26ae5ab7e2d65b67c97524e66f50ce86445dec7Daniel Dunbar// CHECK: leal 0, %eax
175c26ae5ab7e2d65b67c97524e66f50ce86445dec7Daniel Dunbar        leal 0, %eax
176a7f1354eb5289b340220c9138befff89822119b2Chris Lattner
177a7f1354eb5289b340220c9138befff89822119b2Chris Lattner// rdar://7986634 - Insensitivity on opcodes.
178a7f1354eb5289b340220c9138befff89822119b2Chris Lattner// CHECK: int3
179a7f1354eb5289b340220c9138befff89822119b2Chris LattnerINT3
180a7f1354eb5289b340220c9138befff89822119b2Chris Lattner
181ee9102587e7f6fc95de9fc5731b341eeb9bfc3caDaniel Dunbar
182ee9102587e7f6fc95de9fc5731b341eeb9bfc3caDaniel Dunbar// Allow scale factor without index register.
183ee9102587e7f6fc95de9fc5731b341eeb9bfc3caDaniel Dunbar// CHECK: movaps	%xmm3, (%esi)
184ee9102587e7f6fc95de9fc5731b341eeb9bfc3caDaniel Dunbar// CHECK-STDERR: warning: scale factor without index register is ignored
185ee9102587e7f6fc95de9fc5731b341eeb9bfc3caDaniel Dunbarmovaps %xmm3, (%esi, 2)
186ae528f65ba731e2e080822496ef36db950ffe1c1Daniel Dunbar
187ae528f65ba731e2e080822496ef36db950ffe1c1Daniel Dunbar// CHECK: imull $12, %eax, %eax
188ae528f65ba731e2e080822496ef36db950ffe1c1Daniel Dunbarimul $12, %eax
189fba88d49e3fbb68bb84c295a9639fe94f9a8c6aaDaniel Dunbar
190fba88d49e3fbb68bb84c295a9639fe94f9a8c6aaDaniel Dunbar// CHECK: imull %ecx, %eax
191fba88d49e3fbb68bb84c295a9639fe94f9a8c6aaDaniel Dunbarimull %ecx, %eax
1929389b60a03890b70872e5ee2f078c4a4a00d123bChris Lattner
1939389b60a03890b70872e5ee2f078c4a4a00d123bChris Lattner
1949389b60a03890b70872e5ee2f078c4a4a00d123bChris Lattner// rdar://8208481
1959389b60a03890b70872e5ee2f078c4a4a00d123bChris Lattner// CHECK: outb	%al, $161
1969389b60a03890b70872e5ee2f078c4a4a00d123bChris Lattneroutb	%al, $161
1979389b60a03890b70872e5ee2f078c4a4a00d123bChris Lattner// CHECK: outw	%ax, $128
1989389b60a03890b70872e5ee2f078c4a4a00d123bChris Lattneroutw	%ax, $128
1999389b60a03890b70872e5ee2f078c4a4a00d123bChris Lattner// CHECK: inb	$161, %al
2009389b60a03890b70872e5ee2f078c4a4a00d123bChris Lattnerinb	$161, %al
201d68c474ec55a3dd43f9fa8ea4c89e5fae62909abChris Lattner
202d68c474ec55a3dd43f9fa8ea4c89e5fae62909abChris Lattner// rdar://8017621
203d68c474ec55a3dd43f9fa8ea4c89e5fae62909abChris Lattner// CHECK: pushq	$1
204d68c474ec55a3dd43f9fa8ea4c89e5fae62909abChris Lattnerpush $1
205d68c474ec55a3dd43f9fa8ea4c89e5fae62909abChris Lattner
206c5cebeb3cb44a3fd0aaee956431159757ee47914Chris Lattner// rdar://8017530
207c5cebeb3cb44a3fd0aaee956431159757ee47914Chris Lattner// CHECK: sldtw	4
208c5cebeb3cb44a3fd0aaee956431159757ee47914Chris Lattnersldt	4
209e9e0fc5eed9e177c3ee7299a34e640973102ac39Chris Lattner
210e9e0fc5eed9e177c3ee7299a34e640973102ac39Chris Lattner// rdar://8208499
211e9e0fc5eed9e177c3ee7299a34e640973102ac39Chris Lattner// CHECK: cmovnew	%bx, %ax
212e9e0fc5eed9e177c3ee7299a34e640973102ac39Chris Lattnercmovnz %bx, %ax
213e9e0fc5eed9e177c3ee7299a34e640973102ac39Chris Lattner// CHECK: cmovneq	%rbx, %rax
214e9e0fc5eed9e177c3ee7299a34e640973102ac39Chris Lattnercmovnzq %rbx, %rax
215e9e0fc5eed9e177c3ee7299a34e640973102ac39Chris Lattner
216ee211d0ed632d6329922ad4c5f7a25d3d66cf551Chris Lattner
217ee211d0ed632d6329922ad4c5f7a25d3d66cf551Chris Lattner// rdar://8407928
218ee211d0ed632d6329922ad4c5f7a25d3d66cf551Chris Lattner// CHECK: inb	$127, %al
219ee211d0ed632d6329922ad4c5f7a25d3d66cf551Chris Lattner// CHECK: inw	%dx, %ax
220ee211d0ed632d6329922ad4c5f7a25d3d66cf551Chris Lattner// CHECK: outb	%al, $127
221ee211d0ed632d6329922ad4c5f7a25d3d66cf551Chris Lattner// CHECK: outw	%ax, %dx
222ee211d0ed632d6329922ad4c5f7a25d3d66cf551Chris Lattner// CHECK: inl	%dx, %eax
223ee211d0ed632d6329922ad4c5f7a25d3d66cf551Chris Lattnerinb	$0x7f
224ee211d0ed632d6329922ad4c5f7a25d3d66cf551Chris Lattnerinw	%dx
225ee211d0ed632d6329922ad4c5f7a25d3d66cf551Chris Lattneroutb	$0x7f
226ee211d0ed632d6329922ad4c5f7a25d3d66cf551Chris Lattneroutw	%dx
227ee211d0ed632d6329922ad4c5f7a25d3d66cf551Chris Lattnerinl	%dx
228ef63c9a9b6f79fef91dc144db9d5f217d2b83a95Chris Lattner
229ef63c9a9b6f79fef91dc144db9d5f217d2b83a95Chris Lattner
230ef63c9a9b6f79fef91dc144db9d5f217d2b83a95Chris Lattner// PR8114
231ef63c9a9b6f79fef91dc144db9d5f217d2b83a95Chris Lattner// CHECK: outb	%al, %dx
232ef63c9a9b6f79fef91dc144db9d5f217d2b83a95Chris Lattner// CHECK: outw	%ax, %dx
233ef63c9a9b6f79fef91dc144db9d5f217d2b83a95Chris Lattner// CHECK: outl	%eax, %dx
234ef63c9a9b6f79fef91dc144db9d5f217d2b83a95Chris Lattner
235ef63c9a9b6f79fef91dc144db9d5f217d2b83a95Chris Lattnerout %al, (%dx)
236ef63c9a9b6f79fef91dc144db9d5f217d2b83a95Chris Lattnerout %ax, (%dx)
237ef63c9a9b6f79fef91dc144db9d5f217d2b83a95Chris Lattneroutl %eax, (%dx)
2382d592d10a57887ebe7c43a5e610f4278dd6c5d20Chris Lattner
2392d592d10a57887ebe7c43a5e610f4278dd6c5d20Chris Lattner
2402d592d10a57887ebe7c43a5e610f4278dd6c5d20Chris Lattner// rdar://8431422
2412d592d10a57887ebe7c43a5e610f4278dd6c5d20Chris Lattner
2422d592d10a57887ebe7c43a5e610f4278dd6c5d20Chris Lattner// CHECK: fxch	%st(1)
2432d592d10a57887ebe7c43a5e610f4278dd6c5d20Chris Lattner// CHECK: fucom	%st(1)
2442d592d10a57887ebe7c43a5e610f4278dd6c5d20Chris Lattner// CHECK: fucomp	%st(1)
2452d592d10a57887ebe7c43a5e610f4278dd6c5d20Chris Lattner// CHECK: faddp	%st(1)
2462d592d10a57887ebe7c43a5e610f4278dd6c5d20Chris Lattner// CHECK: faddp	%st(0)
2472d592d10a57887ebe7c43a5e610f4278dd6c5d20Chris Lattner// CHECK: fsubp	%st(1)
2482d592d10a57887ebe7c43a5e610f4278dd6c5d20Chris Lattner// CHECK: fsubrp	%st(1)
2492d592d10a57887ebe7c43a5e610f4278dd6c5d20Chris Lattner// CHECK: fmulp	%st(1)
2502d592d10a57887ebe7c43a5e610f4278dd6c5d20Chris Lattner// CHECK: fdivp	%st(1)
2512d592d10a57887ebe7c43a5e610f4278dd6c5d20Chris Lattner// CHECK: fdivrp	%st(1)
2522d592d10a57887ebe7c43a5e610f4278dd6c5d20Chris Lattner
2532d592d10a57887ebe7c43a5e610f4278dd6c5d20Chris Lattnerfxch
2542d592d10a57887ebe7c43a5e610f4278dd6c5d20Chris Lattnerfucom
2552d592d10a57887ebe7c43a5e610f4278dd6c5d20Chris Lattnerfucomp
2562d592d10a57887ebe7c43a5e610f4278dd6c5d20Chris Lattnerfaddp
2572d592d10a57887ebe7c43a5e610f4278dd6c5d20Chris Lattnerfaddp %st
2582d592d10a57887ebe7c43a5e610f4278dd6c5d20Chris Lattnerfsubp
2592d592d10a57887ebe7c43a5e610f4278dd6c5d20Chris Lattnerfsubrp
2602d592d10a57887ebe7c43a5e610f4278dd6c5d20Chris Lattnerfmulp
2612d592d10a57887ebe7c43a5e610f4278dd6c5d20Chris Lattnerfdivp
2622d592d10a57887ebe7c43a5e610f4278dd6c5d20Chris Lattnerfdivrp
2638f777a205e4523b773ba3af3bad007d93da56a9aChris Lattner
2648f777a205e4523b773ba3af3bad007d93da56a9aChris Lattner// CHECK: fcomi	%st(1), %st(0)
2658f777a205e4523b773ba3af3bad007d93da56a9aChris Lattner// CHECK: fcomi	%st(2), %st(0)
2668f777a205e4523b773ba3af3bad007d93da56a9aChris Lattner// CHECK: fucomi	%st(1), %st(0)
2678f777a205e4523b773ba3af3bad007d93da56a9aChris Lattner// CHECK: fucomi	%st(2), %st(0)
2688f777a205e4523b773ba3af3bad007d93da56a9aChris Lattner// CHECK: fucomi	%st(2), %st(0)
2698f777a205e4523b773ba3af3bad007d93da56a9aChris Lattner
2708f777a205e4523b773ba3af3bad007d93da56a9aChris Lattnerfcomi
2718f777a205e4523b773ba3af3bad007d93da56a9aChris Lattnerfcomi	%st(2)
2728f777a205e4523b773ba3af3bad007d93da56a9aChris Lattnerfucomi
2738f777a205e4523b773ba3af3bad007d93da56a9aChris Lattnerfucomi	%st(2)
2748f777a205e4523b773ba3af3bad007d93da56a9aChris Lattnerfucomi	%st(2), %st
2758f777a205e4523b773ba3af3bad007d93da56a9aChris Lattner
27684f362d8912657bb21250a65331f797d5381e9a3Chris Lattner// CHECK: fnstsw %ax
27784f362d8912657bb21250a65331f797d5381e9a3Chris Lattner// CHECK: fnstsw %ax
27884f362d8912657bb21250a65331f797d5381e9a3Chris Lattner// CHECK: fnstsw %ax
27984f362d8912657bb21250a65331f797d5381e9a3Chris Lattner// CHECK: fnstsw %ax
28084f362d8912657bb21250a65331f797d5381e9a3Chris Lattner
28184f362d8912657bb21250a65331f797d5381e9a3Chris Lattnerfnstsw
28284f362d8912657bb21250a65331f797d5381e9a3Chris Lattnerfnstsw %ax
28384f362d8912657bb21250a65331f797d5381e9a3Chris Lattnerfnstsw %eax
28484f362d8912657bb21250a65331f797d5381e9a3Chris Lattnerfnstsw %al
285e9e16a36d9ff355dab60e4b95673bf7a0cd27e86Chris Lattner
286e9e16a36d9ff355dab60e4b95673bf7a0cd27e86Chris Lattner// rdar://8431880
287e9e16a36d9ff355dab60e4b95673bf7a0cd27e86Chris Lattner// CHECK: rclb	$1, %bl
288e9e16a36d9ff355dab60e4b95673bf7a0cd27e86Chris Lattner// CHECK: rcll	$1, 3735928559(%ebx,%ecx,8)
289e9e16a36d9ff355dab60e4b95673bf7a0cd27e86Chris Lattner// CHECK: rcrl	$1, %ecx
290e9e16a36d9ff355dab60e4b95673bf7a0cd27e86Chris Lattner// CHECK: rcrl	$1, 305419896
291e9e16a36d9ff355dab60e4b95673bf7a0cd27e86Chris Lattner
292e9e16a36d9ff355dab60e4b95673bf7a0cd27e86Chris Lattnerrcl	%bl
293e9e16a36d9ff355dab60e4b95673bf7a0cd27e86Chris Lattnerrcll	0xdeadbeef(%ebx,%ecx,8)
294e9e16a36d9ff355dab60e4b95673bf7a0cd27e86Chris Lattnerrcr	%ecx
295e9e16a36d9ff355dab60e4b95673bf7a0cd27e86Chris Lattnerrcrl	0x12345678
296cfad564043021c7276ce19725f43bcde233fa549Chris Lattner
297cfad564043021c7276ce19725f43bcde233fa549Chris Lattner// rdar://8418316
298cfad564043021c7276ce19725f43bcde233fa549Chris Lattner// CHECK: shldw	$1, %bx, %bx
299cfad564043021c7276ce19725f43bcde233fa549Chris Lattner// CHECK: shldw	$1, %bx, %bx
300cfad564043021c7276ce19725f43bcde233fa549Chris Lattner// CHECK: shrdw	$1, %bx, %bx
301cfad564043021c7276ce19725f43bcde233fa549Chris Lattner// CHECK: shrdw	$1, %bx, %bx
302cfad564043021c7276ce19725f43bcde233fa549Chris Lattner
303cfad564043021c7276ce19725f43bcde233fa549Chris Lattnershld	%bx,%bx
304cfad564043021c7276ce19725f43bcde233fa549Chris Lattnershld	$1, %bx,%bx
305cfad564043021c7276ce19725f43bcde233fa549Chris Lattnershrd	%bx,%bx
306cfad564043021c7276ce19725f43bcde233fa549Chris Lattnershrd	$1, %bx,%bx
3076c1b3b1e32f960f44e47d8484510f5c5f8e5343fChris Lattner
3086c1b3b1e32f960f44e47d8484510f5c5f8e5343fChris Lattner// CHECK: sldtl	%ecx
3096c1b3b1e32f960f44e47d8484510f5c5f8e5343fChris Lattner// CHECK: encoding: [0x0f,0x00,0xc1]
3106c1b3b1e32f960f44e47d8484510f5c5f8e5343fChris Lattner// CHECK: sldtw	%cx
3116c1b3b1e32f960f44e47d8484510f5c5f8e5343fChris Lattner// CHECK: encoding: [0x66,0x0f,0x00,0xc1]
3126c1b3b1e32f960f44e47d8484510f5c5f8e5343fChris Lattner
3136c1b3b1e32f960f44e47d8484510f5c5f8e5343fChris Lattnersldt	%ecx
3146c1b3b1e32f960f44e47d8484510f5c5f8e5343fChris Lattnersldt	%cx
3156c1b3b1e32f960f44e47d8484510f5c5f8e5343fChris Lattner
316250b948f21b2910c5bc61fb364c6817727a3a972Chris Lattner// CHECK: lcalll	*3135175374
317250b948f21b2910c5bc61fb364c6817727a3a972Chris Lattner// CHECK: ljmpl	*3135175374
318250b948f21b2910c5bc61fb364c6817727a3a972Chris Lattnerlcall	*0xbadeface
319250b948f21b2910c5bc61fb364c6817727a3a972Chris Lattnerljmp	*0xbadeface
320250b948f21b2910c5bc61fb364c6817727a3a972Chris Lattner
32140cc3f8783a4e426a0d439bb2b070b5c072b5947Chris Lattner
32240cc3f8783a4e426a0d439bb2b070b5c072b5947Chris Lattner// rdar://8444631
32340cc3f8783a4e426a0d439bb2b070b5c072b5947Chris Lattner// CHECK: enter	$31438, $0
32440cc3f8783a4e426a0d439bb2b070b5c072b5947Chris Lattner// CHECK: encoding: [0xc8,0xce,0x7a,0x00]
32540cc3f8783a4e426a0d439bb2b070b5c072b5947Chris Lattner// CHECK: enter	$31438, $1
32640cc3f8783a4e426a0d439bb2b070b5c072b5947Chris Lattner// CHECK: encoding: [0xc8,0xce,0x7a,0x01]
32740cc3f8783a4e426a0d439bb2b070b5c072b5947Chris Lattner// CHECK: enter	$31438, $127
32840cc3f8783a4e426a0d439bb2b070b5c072b5947Chris Lattner// CHECK: encoding: [0xc8,0xce,0x7a,0x7f]
32940cc3f8783a4e426a0d439bb2b070b5c072b5947Chris Lattnerenter $0x7ace,$0
33040cc3f8783a4e426a0d439bb2b070b5c072b5947Chris Lattnerenter $0x7ace,$1
33140cc3f8783a4e426a0d439bb2b070b5c072b5947Chris Lattnerenter $0x7ace,$0x7f
33240cc3f8783a4e426a0d439bb2b070b5c072b5947Chris Lattner
3330c289c140ee7a68e3d06b9d8ae6060758345ad4eChris Lattner
3340c289c140ee7a68e3d06b9d8ae6060758345ad4eChris Lattner// rdar://8456389
3350c289c140ee7a68e3d06b9d8ae6060758345ad4eChris Lattner// CHECK: fstps	(%eax)
3368a5072903e2037da1cfdaffa5a26be00f3d76a22Chris Lattner// CHECK: encoding: [0x67,0xd9,0x18]
3370c289c140ee7a68e3d06b9d8ae6060758345ad4eChris Lattnerfstp	(%eax)
3380c289c140ee7a68e3d06b9d8ae6060758345ad4eChris Lattner
33933d60d5e56bbf3e9ed02bc916735419091736ca3Chris Lattner// rdar://8456364
34033d60d5e56bbf3e9ed02bc916735419091736ca3Chris Lattner// CHECK: movw	%cs, %ax
34133d60d5e56bbf3e9ed02bc916735419091736ca3Chris Lattnermov %CS, %ax
342c2b942acf6008ac822c21722ac7ec84264d10befChris Lattner
343c2b942acf6008ac822c21722ac7ec84264d10befChris Lattner// rdar://8456391
344c2b942acf6008ac822c21722ac7ec84264d10befChris Lattnerfcmovb %st(1), %st(0)   // CHECK: fcmovb	%st(1), %st(0)
345c2b942acf6008ac822c21722ac7ec84264d10befChris Lattnerfcmove %st(1), %st(0)   // CHECK: fcmove	%st(1), %st(0)
346c2b942acf6008ac822c21722ac7ec84264d10befChris Lattnerfcmovbe %st(1), %st(0)  // CHECK: fcmovbe	%st(1), %st(0)
347c2b942acf6008ac822c21722ac7ec84264d10befChris Lattnerfcmovu %st(1), %st(0)   // CHECK: fcmovu	 %st(1), %st(0)
348c2b942acf6008ac822c21722ac7ec84264d10befChris Lattner
349c2b942acf6008ac822c21722ac7ec84264d10befChris Lattnerfcmovnb %st(1), %st(0)  // CHECK: fcmovnb	%st(1), %st(0)
350c2b942acf6008ac822c21722ac7ec84264d10befChris Lattnerfcmovne %st(1), %st(0)  // CHECK: fcmovne	%st(1), %st(0)
351c2b942acf6008ac822c21722ac7ec84264d10befChris Lattnerfcmovnbe %st(1), %st(0) // CHECK: fcmovnbe	%st(1), %st(0)
352c2b942acf6008ac822c21722ac7ec84264d10befChris Lattnerfcmovnu %st(1), %st(0)  // CHECK: fcmovnu	%st(1), %st(0)
353c2b942acf6008ac822c21722ac7ec84264d10befChris Lattner
354c2b942acf6008ac822c21722ac7ec84264d10befChris Lattnerfcmovnae %st(1), %st(0) // CHECK: fcmovb	%st(1), %st(0)
355c2b942acf6008ac822c21722ac7ec84264d10befChris Lattnerfcmovna %st(1), %st(0)  // CHECK: fcmovbe	%st(1), %st(0)
356c2b942acf6008ac822c21722ac7ec84264d10befChris Lattner
357c2b942acf6008ac822c21722ac7ec84264d10befChris Lattnerfcmovae %st(1), %st(0)  // CHECK: fcmovnb	%st(1), %st(0)
358c2b942acf6008ac822c21722ac7ec84264d10befChris Lattnerfcmova %st(1), %st(0)   // CHECK: fcmovnbe	%st(1), %st(0)
359f7d4da0c1dcdac3941fe440982bce19706541629Chris Lattner
360f7d4da0c1dcdac3941fe440982bce19706541629Chris Lattner// rdar://8456417
361f7d4da0c1dcdac3941fe440982bce19706541629Chris Lattner.byte 88 + 1 & 15  // CHECK: .byte	9
362f7d4da0c1dcdac3941fe440982bce19706541629Chris Lattner
363bc57c6db4a3a1f5df4450d8dbb100e1eb6944c28Chris Lattner// rdar://8456412
364bc57c6db4a3a1f5df4450d8dbb100e1eb6944c28Chris Lattnermov %rdx, %cr0
365bc57c6db4a3a1f5df4450d8dbb100e1eb6944c28Chris Lattner// CHECK: movq	%rdx, %cr0
366bc57c6db4a3a1f5df4450d8dbb100e1eb6944c28Chris Lattner// CHECK: encoding: [0x0f,0x22,0xc2]
367bc57c6db4a3a1f5df4450d8dbb100e1eb6944c28Chris Lattnermov %rdx, %cr4
368bc57c6db4a3a1f5df4450d8dbb100e1eb6944c28Chris Lattner// CHECK: movq	%rdx, %cr4
369bc57c6db4a3a1f5df4450d8dbb100e1eb6944c28Chris Lattner// CHECK: encoding: [0x0f,0x22,0xe2]
370bc57c6db4a3a1f5df4450d8dbb100e1eb6944c28Chris Lattnermov %rdx, %cr8
371bc57c6db4a3a1f5df4450d8dbb100e1eb6944c28Chris Lattner// CHECK: movq	%rdx, %cr8
372bc57c6db4a3a1f5df4450d8dbb100e1eb6944c28Chris Lattner// CHECK: encoding: [0x44,0x0f,0x22,0xc2]
373bc57c6db4a3a1f5df4450d8dbb100e1eb6944c28Chris Lattnermov %rdx, %cr15
374bc57c6db4a3a1f5df4450d8dbb100e1eb6944c28Chris Lattner// CHECK: movq	%rdx, %cr15
375bc57c6db4a3a1f5df4450d8dbb100e1eb6944c28Chris Lattner// CHECK: encoding: [0x44,0x0f,0x22,0xfa]
3762c5291b56358bf239bdfc675ed681c2da3eb4901Chris Lattner
3772c5291b56358bf239bdfc675ed681c2da3eb4901Chris Lattner// rdar://8456371 - Handle commutable instructions written backward.
3782c5291b56358bf239bdfc675ed681c2da3eb4901Chris Lattner// CHECK: 	faddp	%st(1)
3792c5291b56358bf239bdfc675ed681c2da3eb4901Chris Lattner// CHECK:	fmulp	%st(2)
3802c5291b56358bf239bdfc675ed681c2da3eb4901Chris Lattnerfaddp %st, %st(1)
3812c5291b56358bf239bdfc675ed681c2da3eb4901Chris Lattnerfmulp %st, %st(2)
3822c5291b56358bf239bdfc675ed681c2da3eb4901Chris Lattner
383cb296ec0b689ccbcb08cedc5d3e090c0471eb393Chris Lattner// rdar://8468087 - Encode these accurately, they are not synonyms.
384cb296ec0b689ccbcb08cedc5d3e090c0471eb393Chris Lattner// CHECK: fmul	%st(0), %st(1)
385cb296ec0b689ccbcb08cedc5d3e090c0471eb393Chris Lattner// CHECK: encoding: [0xdc,0xc9]
386cb296ec0b689ccbcb08cedc5d3e090c0471eb393Chris Lattner// CHECK: fmul	%st(1)
387cb296ec0b689ccbcb08cedc5d3e090c0471eb393Chris Lattner// CHECK: encoding: [0xd8,0xc9]
388cb296ec0b689ccbcb08cedc5d3e090c0471eb393Chris Lattnerfmul %st, %st(1)
389cb296ec0b689ccbcb08cedc5d3e090c0471eb393Chris Lattnerfmul %st(1), %st
390cb296ec0b689ccbcb08cedc5d3e090c0471eb393Chris Lattner
391cb296ec0b689ccbcb08cedc5d3e090c0471eb393Chris Lattner// CHECK: fadd	%st(0), %st(1)
392cb296ec0b689ccbcb08cedc5d3e090c0471eb393Chris Lattner// CHECK: encoding: [0xdc,0xc1]
393cb296ec0b689ccbcb08cedc5d3e090c0471eb393Chris Lattner// CHECK: fadd	%st(1)
394cb296ec0b689ccbcb08cedc5d3e090c0471eb393Chris Lattner// CHECK: encoding: [0xd8,0xc1]
395cb296ec0b689ccbcb08cedc5d3e090c0471eb393Chris Lattnerfadd %st, %st(1)
396cb296ec0b689ccbcb08cedc5d3e090c0471eb393Chris Lattnerfadd %st(1), %st
397cb296ec0b689ccbcb08cedc5d3e090c0471eb393Chris Lattner
398cb296ec0b689ccbcb08cedc5d3e090c0471eb393Chris Lattner
399fd8fddd830ad8322d04161f2f6bad6269a451ab2Chris Lattner// rdar://8416805
400fd8fddd830ad8322d04161f2f6bad6269a451ab2Chris Lattner// CHECK: xorb	%al, %al
401fd8fddd830ad8322d04161f2f6bad6269a451ab2Chris Lattner// CHECK: encoding: [0x30,0xc0]
402fd8fddd830ad8322d04161f2f6bad6269a451ab2Chris Lattner// CHECK: xorw	%di, %di
403fd8fddd830ad8322d04161f2f6bad6269a451ab2Chris Lattner// CHECK: encoding: [0x66,0x31,0xff]
404fd8fddd830ad8322d04161f2f6bad6269a451ab2Chris Lattner// CHECK: xorl	%esi, %esi
405fd8fddd830ad8322d04161f2f6bad6269a451ab2Chris Lattner// CHECK: encoding: [0x31,0xf6]
406fd8fddd830ad8322d04161f2f6bad6269a451ab2Chris Lattner// CHECK: xorq	%rsi, %rsi
407fd8fddd830ad8322d04161f2f6bad6269a451ab2Chris Lattner// CHECK: encoding: [0x48,0x31,0xf6]
408fd8fddd830ad8322d04161f2f6bad6269a451ab2Chris Lattnerclrb    %al
409fd8fddd830ad8322d04161f2f6bad6269a451ab2Chris Lattnerclr    %di
410fd8fddd830ad8322d04161f2f6bad6269a451ab2Chris Lattnerclr    %esi
411fd8fddd830ad8322d04161f2f6bad6269a451ab2Chris Lattnerclr    %rsi
412fd8fddd830ad8322d04161f2f6bad6269a451ab2Chris Lattner
413b1162fc05e09c7247be1896fd4aa4ca7e76c938cChris Lattner// rdar://8456378
414b1162fc05e09c7247be1896fd4aa4ca7e76c938cChris Lattnercltq  // CHECK: cltq
415b1162fc05e09c7247be1896fd4aa4ca7e76c938cChris Lattnercdqe  // CHECK: cltq
416b1162fc05e09c7247be1896fd4aa4ca7e76c938cChris Lattnercwde  // CHECK: cwtl
417b1162fc05e09c7247be1896fd4aa4ca7e76c938cChris Lattnercwtl  // CHECK: cwtl
4182c5291b56358bf239bdfc675ed681c2da3eb4901Chris Lattner
419295646274276c6814d970bed86d3b4ff76ba3ee3Chris Lattner// rdar://8416805
420295646274276c6814d970bed86d3b4ff76ba3ee3Chris Lattnercbw   // CHECK: cbtw
421295646274276c6814d970bed86d3b4ff76ba3ee3Chris Lattnercwd   // CHECK: cwtd
422295646274276c6814d970bed86d3b4ff76ba3ee3Chris Lattnercdq   // CHECK: cltd
4237c51a3172cf5104ebeaef22f1366fa634ca00d85Chris Lattner
4247c51a3172cf5104ebeaef22f1366fa634ca00d85Chris Lattner// rdar://8456378 and PR7557 - fstsw
4257c51a3172cf5104ebeaef22f1366fa634ca00d85Chris Lattnerfstsw %ax
4267c51a3172cf5104ebeaef22f1366fa634ca00d85Chris Lattner// CHECK: wait
4277c51a3172cf5104ebeaef22f1366fa634ca00d85Chris Lattner// CHECK: fnstsw %ax
4287c51a3172cf5104ebeaef22f1366fa634ca00d85Chris Lattnerfstsw (%rax)
4297c51a3172cf5104ebeaef22f1366fa634ca00d85Chris Lattner// CHECK: wait
4307c51a3172cf5104ebeaef22f1366fa634ca00d85Chris Lattner// CHECK: fnstsw (%rax)
4310c04e4f58f8d1ad4604de17324170fa1f4e43418Chris Lattner
4320bb83a84d4319030c0c9260dbfea461c40eea1b2Chris Lattner// PR8259
4330bb83a84d4319030c0c9260dbfea461c40eea1b2Chris Lattnerfstcw (%rsp)
4340bb83a84d4319030c0c9260dbfea461c40eea1b2Chris Lattner// CHECK: wait
4350bb83a84d4319030c0c9260dbfea461c40eea1b2Chris Lattner// CHECK: fnstcw (%rsp)
4360bb83a84d4319030c0c9260dbfea461c40eea1b2Chris Lattner
4379ee4aed3b652ea4a4327af2cb1c614dd10cd8b47Chris Lattner// PR8259
4389ee4aed3b652ea4a4327af2cb1c614dd10cd8b47Chris Lattnerfstcw (%rsp)
4399ee4aed3b652ea4a4327af2cb1c614dd10cd8b47Chris Lattner// CHECK: wait
4409ee4aed3b652ea4a4327af2cb1c614dd10cd8b47Chris Lattner// CHECK: fnstcw (%rsp)
4419ee4aed3b652ea4a4327af2cb1c614dd10cd8b47Chris Lattner
4429ee4aed3b652ea4a4327af2cb1c614dd10cd8b47Chris Lattner// PR8258
4439ee4aed3b652ea4a4327af2cb1c614dd10cd8b47Chris Lattnerfinit
4449ee4aed3b652ea4a4327af2cb1c614dd10cd8b47Chris Lattner// CHECK: wait
4459ee4aed3b652ea4a4327af2cb1c614dd10cd8b47Chris Lattner// CHECK: fninit
4469ee4aed3b652ea4a4327af2cb1c614dd10cd8b47Chris Lattner
447905f2e06691672c236ae864faf0ad7220afc2844Chris Lattnerfsave	32493
448905f2e06691672c236ae864faf0ad7220afc2844Chris Lattner// CHECK: wait
449905f2e06691672c236ae864faf0ad7220afc2844Chris Lattner// CHECK: fnsave 32493
450905f2e06691672c236ae864faf0ad7220afc2844Chris Lattner
4510c04e4f58f8d1ad4604de17324170fa1f4e43418Chris Lattner
4520c04e4f58f8d1ad4604de17324170fa1f4e43418Chris Lattner// rdar://8456382 - cvtsd2si support.
4530c04e4f58f8d1ad4604de17324170fa1f4e43418Chris Lattnercvtsd2si	%xmm1, %rax
454f3654db4588884edbf52f139a2f713e45a8ed9b4Chris Lattner// CHECK: cvtsd2siq	%xmm1, %rax
4550c04e4f58f8d1ad4604de17324170fa1f4e43418Chris Lattner// CHECK: encoding: [0xf2,0x48,0x0f,0x2d,0xc1]
4560c04e4f58f8d1ad4604de17324170fa1f4e43418Chris Lattnercvtsd2si	%xmm1, %eax
457f3654db4588884edbf52f139a2f713e45a8ed9b4Chris Lattner// CHECK: cvtsd2sil	%xmm1, %eax
4580c04e4f58f8d1ad4604de17324170fa1f4e43418Chris Lattner// CHECK: encoding: [0xf2,0x0f,0x2d,0xc1]
4590c04e4f58f8d1ad4604de17324170fa1f4e43418Chris Lattner
460f3654db4588884edbf52f139a2f713e45a8ed9b4Chris Lattnercvtsd2siq %xmm0, %rax // CHECK: cvtsd2siq	%xmm0, %rax
461f3654db4588884edbf52f139a2f713e45a8ed9b4Chris Lattnercvtsd2sil %xmm0, %eax // CHECK: cvtsd2sil	%xmm0, %eax
462f3654db4588884edbf52f139a2f713e45a8ed9b4Chris Lattnercvtsd2si %xmm0, %rax  // CHECK: cvtsd2siq	%xmm0, %rax
463f3654db4588884edbf52f139a2f713e45a8ed9b4Chris Lattner
464f3654db4588884edbf52f139a2f713e45a8ed9b4Chris Lattner
465bf6018ac5a4ce8db0f0719aa666cd81f0904431aChris Lattnercvttpd2dq %xmm1, %xmm0  // CHECK: cvttpd2dq %xmm1, %xmm0
466bf6018ac5a4ce8db0f0719aa666cd81f0904431aChris Lattnercvttpd2dq (%rax), %xmm0 // CHECK: cvttpd2dq (%rax), %xmm0
467bf6018ac5a4ce8db0f0719aa666cd81f0904431aChris Lattner
468bf6018ac5a4ce8db0f0719aa666cd81f0904431aChris Lattnercvttps2dq %xmm1, %xmm0  // CHECK: cvttps2dq %xmm1, %xmm0
469bf6018ac5a4ce8db0f0719aa666cd81f0904431aChris Lattnercvttps2dq (%rax), %xmm0 // CHECK: cvttps2dq (%rax), %xmm0
470b2ef4c1235c846c2503d0796541f4255ef1e13f5Chris Lattner
471b2ef4c1235c846c2503d0796541f4255ef1e13f5Chris Lattner// rdar://8456376 - llvm-mc rejects 'roundss'
472b2ef4c1235c846c2503d0796541f4255ef1e13f5Chris Lattnerroundss $0xE, %xmm0, %xmm0 // CHECK: encoding: [0x66,0x0f,0x3a,0x0a,0xc0,0x0e]
473b2ef4c1235c846c2503d0796541f4255ef1e13f5Chris Lattnerroundps $0xE, %xmm0, %xmm0 // CHECK: encoding: [0x66,0x0f,0x3a,0x08,0xc0,0x0e]
474b2ef4c1235c846c2503d0796541f4255ef1e13f5Chris Lattnerroundsd $0xE, %xmm0, %xmm0 // CHECK: encoding: [0x66,0x0f,0x3a,0x0b,0xc0,0x0e]
475b2ef4c1235c846c2503d0796541f4255ef1e13f5Chris Lattnerroundpd $0xE, %xmm0, %xmm0 // CHECK: encoding: [0x66,0x0f,0x3a,0x09,0xc0,0x0e]
4768a5072903e2037da1cfdaffa5a26be00f3d76a22Chris Lattner
4778a5072903e2037da1cfdaffa5a26be00f3d76a22Chris Lattner
4788a5072903e2037da1cfdaffa5a26be00f3d76a22Chris Lattner// rdar://8482675 - 32-bit mem operand support in 64-bit mode (0x67 prefix)
4798a5072903e2037da1cfdaffa5a26be00f3d76a22Chris Lattnerleal	8(%eax), %esi
4808a5072903e2037da1cfdaffa5a26be00f3d76a22Chris Lattner// CHECK: leal	8(%eax), %esi
4818a5072903e2037da1cfdaffa5a26be00f3d76a22Chris Lattner// CHECK: encoding: [0x67,0x8d,0x70,0x08]
4828a5072903e2037da1cfdaffa5a26be00f3d76a22Chris Lattnerleaq	8(%eax), %rsi
4838a5072903e2037da1cfdaffa5a26be00f3d76a22Chris Lattner// CHECK: leaq	8(%eax), %rsi
4848a5072903e2037da1cfdaffa5a26be00f3d76a22Chris Lattner// CHECK: encoding: [0x67,0x48,0x8d,0x70,0x08]
4858a5072903e2037da1cfdaffa5a26be00f3d76a22Chris Lattnerleaq	8(%rax), %rsi
4868a5072903e2037da1cfdaffa5a26be00f3d76a22Chris Lattner// CHECK: leaq	8(%rax), %rsi
4878a5072903e2037da1cfdaffa5a26be00f3d76a22Chris Lattner// CHECK: encoding: [0x48,0x8d,0x70,0x08]
4888a5072903e2037da1cfdaffa5a26be00f3d76a22Chris Lattner
48978a194693bb9bbfa1080454cded0166265b803e5Chris Lattner
49078a194693bb9bbfa1080454cded0166265b803e5Chris Lattnercvttpd2dq	0xdeadbeef(%ebx,%ecx,8),%xmm5
49178a194693bb9bbfa1080454cded0166265b803e5Chris Lattner// CHECK: cvttpd2dq	3735928559(%ebx,%ecx,8), %xmm5
49278a194693bb9bbfa1080454cded0166265b803e5Chris Lattner// CHECK: encoding: [0x67,0x66,0x0f,0xe6,0xac,0xcb,0xef,0xbe,0xad,0xde]
49378a194693bb9bbfa1080454cded0166265b803e5Chris Lattner
4946f4202726339815c7167ef2f00858c766c9ffea9Chris Lattner// rdar://8490728 - llvm-mc rejects 'movmskpd'
4956f4202726339815c7167ef2f00858c766c9ffea9Chris Lattnermovmskpd	%xmm6, %rax
4966f4202726339815c7167ef2f00858c766c9ffea9Chris Lattner// CHECK: movmskpd	%xmm6, %rax
4976f4202726339815c7167ef2f00858c766c9ffea9Chris Lattner// CHECK: encoding: [0x66,0x48,0x0f,0x50,0xc6]
4986f4202726339815c7167ef2f00858c766c9ffea9Chris Lattnermovmskpd	%xmm6, %eax
4996f4202726339815c7167ef2f00858c766c9ffea9Chris Lattner// CHECK: movmskpd	%xmm6, %eax
5006f4202726339815c7167ef2f00858c766c9ffea9Chris Lattner// CHECK: encoding: [0x66,0x0f,0x50,0xc6]
501a25f933396b8408ad89218bc60b0a93f130a3ea9Chris Lattner
502a25f933396b8408ad89218bc60b0a93f130a3ea9Chris Lattner// rdar://8491845 - Gas supports commuted forms of non-commutable instructions.
503a25f933396b8408ad89218bc60b0a93f130a3ea9Chris Lattnerfdivrp %st(0), %st(1) // CHECK: encoding: [0xde,0xf9]
504a25f933396b8408ad89218bc60b0a93f130a3ea9Chris Lattnerfdivrp %st(1), %st(0) // CHECK: encoding: [0xde,0xf9]
505a25f933396b8408ad89218bc60b0a93f130a3ea9Chris Lattner
506a25f933396b8408ad89218bc60b0a93f130a3ea9Chris Lattnerfsubrp %ST(0), %ST(1) // CHECK: encoding: [0xde,0xe9]
507a25f933396b8408ad89218bc60b0a93f130a3ea9Chris Lattnerfsubrp %ST(1), %ST(0) // CHECK: encoding: [0xde,0xe9]
508a25f933396b8408ad89218bc60b0a93f130a3ea9Chris Lattner
5090bb83a84d4319030c0c9260dbfea461c40eea1b2Chris Lattner
510ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnermovl	foo(%rip), %eax
511ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: movl	foo(%rip), %eax
512ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0x8b,0x05,A,A,A,A]
513ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: fixup A - offset: 2, value: foo-4, kind: reloc_riprel_4byte
514ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
515ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnermovb	$12, foo(%rip)
516ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: movb	$12, foo(%rip)
517ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0xc6,0x05,A,A,A,A,0x0c]
518ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK:    fixup A - offset: 2, value: foo-5, kind: reloc_riprel_4byte
519ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
520ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnermovw	$12, foo(%rip)
521ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: movw	$12, foo(%rip)
522ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0x66,0xc7,0x05,A,A,A,A,0x0c,0x00]
523ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK:    fixup A - offset: 3, value: foo-6, kind: reloc_riprel_4byte
524ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
525ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnermovl	$12, foo(%rip)
526ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: movl	$12, foo(%rip)
527ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0xc7,0x05,A,A,A,A,0x0c,0x00,0x00,0x00]
528ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK:    fixup A - offset: 2, value: foo-8, kind: reloc_riprel_4byte
529ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
530ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnermovq	$12, foo(%rip)
531ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK:  movq	$12, foo(%rip)
532ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0x48,0xc7,0x05,A,A,A,A,0x0c,0x00,0x00,0x00]
533ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK:    fixup A - offset: 3, value: foo-8, kind: reloc_riprel_4byte
534ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
535ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: addq	$-424, %rax
536ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0x48,0x05,0x58,0xfe,0xff,0xff]
537ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattneraddq $-424, %rax
538ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
539ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
540ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: movq	_foo@GOTPCREL(%rip), %rax
541ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK:  encoding: [0x48,0x8b,0x05,A,A,A,A]
542ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK:  fixup A - offset: 3, value: _foo@GOTPCREL-4, kind: reloc_riprel_4byte_movq_load
543ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnermovq _foo@GOTPCREL(%rip), %rax
544ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
545ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: movq	_foo@GOTPCREL(%rip), %r14
546ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK:  encoding: [0x4c,0x8b,0x35,A,A,A,A]
547ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK:  fixup A - offset: 3, value: _foo@GOTPCREL-4, kind: reloc_riprel_4byte_movq_load
548ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnermovq _foo@GOTPCREL(%rip), %r14
549ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
550ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
551ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: movq	(%r13,%rax,8), %r13
552ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK:  encoding: [0x4d,0x8b,0x6c,0xc5,0x00]
553ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnermovq 0x00(%r13,%rax,8),%r13
554ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
555ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: testq	%rax, %rbx
556ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK:  encoding: [0x48,0x85,0xd8]
557ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnertestq %rax, %rbx
558ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
559ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: cmpq	%rbx, %r14
560ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK:   encoding: [0x49,0x39,0xde]
561ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner        cmpq %rbx, %r14
562ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
563ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// rdar://7947167
564ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
565ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnermovsq
566ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: movsq
567ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK:   encoding: [0x48,0xa5]
568ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
569ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnermovsl
570ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: movsl
571ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK:   encoding: [0xa5]
572ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
573ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnerstosq
574ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: stosq
575ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK:   encoding: [0x48,0xab]
576ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnerstosl
577ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: stosl
578ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK:   encoding: [0xab]
579ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
580ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
581ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// Not moffset forms of moves, they are x86-32 only! rdar://7947184
582ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnermovb	0, %al    // CHECK: movb 0, %al # encoding: [0x8a,0x04,0x25,0x00,0x00,0x00,0x00]
583ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnermovw	0, %ax    // CHECK: movw 0, %ax # encoding: [0x66,0x8b,0x04,0x25,0x00,0x00,0x00,0x00]
584ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnermovl	0, %eax   // CHECK: movl 0, %eax # encoding: [0x8b,0x04,0x25,0x00,0x00,0x00,0x00]
585ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
586ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: pushfq	# encoding: [0x9c]
587ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner        pushf
588ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: pushfq	# encoding: [0x9c]
589ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner        pushfq
590ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: popfq	        # encoding: [0x9d]
591ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner        popf
592ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: popfq	        # encoding: [0x9d]
593ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner        popfq
594ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
595ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: movabsq $-281474976710654, %rax
596ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0x48,0xb8,0x02,0x00,0x00,0x00,0x00,0x00,0xff,0xff]
597ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner        movabsq $0xFFFF000000000002, %rax
598ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
599508fc4708bb859391af8969614e67c84ab56c38cChris Lattner// CHECK: movabsq $-281474976710654, %rax
600ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0x48,0xb8,0x02,0x00,0x00,0x00,0x00,0x00,0xff,0xff]
601ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner        movq $0xFFFF000000000002, %rax
602ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
603ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: movq $-65536, %rax
604ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0x48,0xc7,0xc0,0x00,0x00,0xff,0xff]
605ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner        movq $0xFFFFFFFFFFFF0000, %rax
606ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
607ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: movq $-256, %rax
608ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0x48,0xc7,0xc0,0x00,0xff,0xff,0xff]
609ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner        movq $0xFFFFFFFFFFFFFF00, %rax
610ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
611ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: movq $10, %rax
612ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0x48,0xc7,0xc0,0x0a,0x00,0x00,0x00]
613ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner        movq $10, %rax
614ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
615ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// rdar://8014869
616ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner//
617ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: ret
618ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK:  encoding: [0xc3]
619ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner        retq
620ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
621ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: sete %al
622ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0x0f,0x94,0xc0]
623ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner        setz %al
624ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
625ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: setne %al
626ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0x0f,0x95,0xc0]
627ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner        setnz %al
628ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
629ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: je 0
630ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0x74,A]
631ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner        jz 0
632ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
633ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: jne
634ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0x75,A]
635ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner        jnz 0
636ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
637ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// rdar://8017515
638ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnerbtq $0x01,%rdx
639ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: btq	$1, %rdx
640ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK:  encoding: [0x48,0x0f,0xba,0xe2,0x01]
641ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
642ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner//rdar://8017633
643ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: movzbl	%al, %esi
644ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK:  encoding: [0x0f,0xb6,0xf0]
645ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner        movzx %al, %esi
646ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
647ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: movzbq	%al, %rsi
648ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK:  encoding: [0x48,0x0f,0xb6,0xf0]
649ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner        movzx %al, %rsi
650ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
651ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: movzbq	(%rsp), %rsi
652ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK:  encoding: [0x48,0x0f,0xb6,0x34,0x24]
653ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner        movzx 0(%rsp), %rsi
654ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
655ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
656ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// rdar://7873482
657ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: [0x65,0x8b,0x04,0x25,0x7c,0x00,0x00,0x00]
658ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner        movl	%gs:124, %eax
659ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
660ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: jmpq *8(%rax)
661ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK:   encoding: [0xff,0x60,0x08]
662ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner	jmp	*8(%rax)
663ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
664ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: btq $61, -216(%rbp)
665ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK:   encoding: [0x48,0x0f,0xba,0xa5,0x28,0xff,0xff,0xff,0x3d]
666ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner	btq	$61, -216(%rbp)
667ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
668ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
669ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// rdar://8061602
670ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris LattnerL1:
671ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner  jecxz L1
672ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: jecxz L1
673ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK:   encoding: [0x67,0xe3,A]
674ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner  jrcxz L1
675ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: jrcxz L1
676ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK:   encoding: [0xe3,A]
677ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
678ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// PR8061
679ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnerxchgl   368(%rax),%ecx
680ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: xchgl	%ecx, 368(%rax)
681ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnerxchgl   %ecx, 368(%rax)
682ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: xchgl	%ecx, 368(%rax)
683ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
684ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// rdar://8407548
685ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnerxchg	0xdeadbeef(%rbx,%rcx,8),%bl
686ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: xchgb	%bl, 3735928559(%rbx,%rcx,8)
687ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
688ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
689ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
690ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// PR7254
691ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnerlock  incl 1(%rsp)
692ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: lock
693ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: incl 1(%rsp)
694ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
695ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// rdar://8033482
696ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnerrep movsl
697ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: rep
698ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0xf3]
699ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: movsl
700ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0xa5]
701ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
702ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
703ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// rdar://8403974
704ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattneriret
705ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: iretl
706ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0xcf]
707ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattneriretw
708ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: iretw
709ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0x66,0xcf]
710ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattneriretl
711ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: iretl
712ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0xcf]
713ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattneriretq
714ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: iretq
715ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0x48,0xcf]
716ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
7177aef62ff8c72506cc9b77333d25f4aa8aa9cf9feKevin Enderby// rdar://8416805
7187aef62ff8c72506cc9b77333d25f4aa8aa9cf9feKevin Enderby// CHECK: retw	$31438
7197aef62ff8c72506cc9b77333d25f4aa8aa9cf9feKevin Enderby// CHECK:  encoding: [0x66,0xc2,0xce,0x7a]
7207aef62ff8c72506cc9b77333d25f4aa8aa9cf9feKevin Enderby        	retw	$0x7ace
7217aef62ff8c72506cc9b77333d25f4aa8aa9cf9feKevin Enderby
7227aef62ff8c72506cc9b77333d25f4aa8aa9cf9feKevin Enderby// CHECK: lretw	$31438
7237aef62ff8c72506cc9b77333d25f4aa8aa9cf9feKevin Enderby// CHECK:  encoding: [0x66,0xca,0xce,0x7a]
7247aef62ff8c72506cc9b77333d25f4aa8aa9cf9feKevin Enderby        	lretw	$0x7ace
7257aef62ff8c72506cc9b77333d25f4aa8aa9cf9feKevin Enderby
726ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// rdar://8403907
727ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnersysret
728ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: sysretl
729ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0x0f,0x07]
730ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnersysretl
731ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: sysretl
732ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0x0f,0x07]
733ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnersysretq
734ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: sysretq
735ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0x48,0x0f,0x07]
736ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
737ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// rdar://8407242
738ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnerpush %fs
739ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: pushq	%fs
740ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0x0f,0xa0]
741ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnerpush %gs
742ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: pushq	%gs
743ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0x0f,0xa8]
744ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
745ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnerpushw %fs
746ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: pushw	%fs
747ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0x66,0x0f,0xa0]
748ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnerpushw %gs
749ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: pushw	%gs
750ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0x66,0x0f,0xa8]
751ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
752ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
753ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnerpop %fs
754ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: popq	%fs
755ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0x0f,0xa1]
756ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnerpop %gs
757ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: popq	%gs
758ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0x0f,0xa9]
759ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
760ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnerpopw %fs
761ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: popw	%fs
762ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0x66,0x0f,0xa1]
763ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnerpopw %gs
764ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: popw	%gs
765ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0x66,0x0f,0xa9]
766ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
767ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// rdar://8438816
768ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnerfildq -8(%rsp)
769ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattnerfildll -8(%rsp)
770ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: fildll	-8(%rsp)
771ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0xdf,0x6c,0x24,0xf8]
772ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: fildll	-8(%rsp)
773ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner// CHECK: encoding: [0xdf,0x6c,0x24,0xf8]
774ebfa86b4349bb38732f0b927ed2589b176e69cb5Chris Lattner
77527c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattner// CHECK: callq a
77627c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattner        callq a
77727c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattner
77827c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattner// CHECK: leaq	-40(%rbp), %r15
77927c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattner	leaq	-40(%rbp), %r15
78027c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattner
78127c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattner
78227c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattner
78327c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattner// rdar://8013734 - Alias dr6=db6
78427c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattnermov %dr6, %rax
78527c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattnermov %db6, %rax
78627c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattner// CHECK: movq	%dr6, %rax
78727c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattner// CHECK: movq	%dr6, %rax
78827c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattner
78927c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattner
79027c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattner// INC/DEC encodings.
79127c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattnerincb %al  // CHECK:	incb	%al # encoding: [0xfe,0xc0]
79227c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattnerincw %ax  // CHECK:	incw	%ax # encoding: [0x66,0xff,0xc0]
79327c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattnerincl %eax // CHECK:	incl	%eax # encoding: [0xff,0xc0]
79427c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattnerdecb %al  // CHECK:	decb	%al # encoding: [0xfe,0xc8]
79527c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattnerdecw %ax  // CHECK:	decw	%ax # encoding: [0x66,0xff,0xc8]
79627c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattnerdecl %eax // CHECK:	decl	%eax # encoding: [0xff,0xc8]
79727c5215fbd59c2e8262dd14d63ada96ce3cfd351Chris Lattner
79887f4a1a4331e40cbba28e829561759d146273840Kevin Enderby// rdar://8416805
79987f4a1a4331e40cbba28e829561759d146273840Kevin Enderby// CHECK: lgdt	4(%rax)
80087f4a1a4331e40cbba28e829561759d146273840Kevin Enderby// CHECK:  encoding: [0x0f,0x01,0x50,0x04]
80187f4a1a4331e40cbba28e829561759d146273840Kevin Enderby        	lgdt	4(%rax)
80287f4a1a4331e40cbba28e829561759d146273840Kevin Enderby
80387f4a1a4331e40cbba28e829561759d146273840Kevin Enderby// CHECK: lgdt	4(%rax)
80487f4a1a4331e40cbba28e829561759d146273840Kevin Enderby// CHECK:  encoding: [0x0f,0x01,0x50,0x04]
80587f4a1a4331e40cbba28e829561759d146273840Kevin Enderby        	lgdtq	4(%rax)
80687f4a1a4331e40cbba28e829561759d146273840Kevin Enderby
80787f4a1a4331e40cbba28e829561759d146273840Kevin Enderby// CHECK: lidt	4(%rax)
80887f4a1a4331e40cbba28e829561759d146273840Kevin Enderby// CHECK:  encoding: [0x0f,0x01,0x58,0x04]
80987f4a1a4331e40cbba28e829561759d146273840Kevin Enderby        	lidt	4(%rax)
81087f4a1a4331e40cbba28e829561759d146273840Kevin Enderby
81187f4a1a4331e40cbba28e829561759d146273840Kevin Enderby// CHECK: lidt	4(%rax)
81287f4a1a4331e40cbba28e829561759d146273840Kevin Enderby// CHECK:  encoding: [0x0f,0x01,0x58,0x04]
81387f4a1a4331e40cbba28e829561759d146273840Kevin Enderby        	lidtq	4(%rax)
81487f4a1a4331e40cbba28e829561759d146273840Kevin Enderby
81587f4a1a4331e40cbba28e829561759d146273840Kevin Enderby// CHECK: sgdt	4(%rax)
81687f4a1a4331e40cbba28e829561759d146273840Kevin Enderby// CHECK:  encoding: [0x0f,0x01,0x40,0x04]
81787f4a1a4331e40cbba28e829561759d146273840Kevin Enderby        	sgdt	4(%rax)
81887f4a1a4331e40cbba28e829561759d146273840Kevin Enderby
81987f4a1a4331e40cbba28e829561759d146273840Kevin Enderby// CHECK: sgdt	4(%rax)
82087f4a1a4331e40cbba28e829561759d146273840Kevin Enderby// CHECK:  encoding: [0x0f,0x01,0x40,0x04]
82187f4a1a4331e40cbba28e829561759d146273840Kevin Enderby        	sgdtq	4(%rax)
82287f4a1a4331e40cbba28e829561759d146273840Kevin Enderby
82387f4a1a4331e40cbba28e829561759d146273840Kevin Enderby// CHECK: sidt	4(%rax)
82487f4a1a4331e40cbba28e829561759d146273840Kevin Enderby// CHECK:  encoding: [0x0f,0x01,0x48,0x04]
82587f4a1a4331e40cbba28e829561759d146273840Kevin Enderby        	sidt	4(%rax)
82687f4a1a4331e40cbba28e829561759d146273840Kevin Enderby
82787f4a1a4331e40cbba28e829561759d146273840Kevin Enderby// CHECK: sidt	4(%rax)
82887f4a1a4331e40cbba28e829561759d146273840Kevin Enderby// CHECK:  encoding: [0x0f,0x01,0x48,0x04]
82987f4a1a4331e40cbba28e829561759d146273840Kevin Enderby        	sidtq	4(%rax)
830