add a missed cmov alias, part of rdar://8416805
[oota-llvm.git] / test / MC / AsmParser / X86 / x86_instructions.s
1 // RUN: llvm-mc -triple x86_64-unknown-unknown %s > %t 2> %t.err
2 // RUN: FileCheck < %t %s
3 // RUN: FileCheck --check-prefix=CHECK-STDERR < %t.err %s
4
5 // CHECK: subb %al, %al
6         subb %al, %al
7
8 // CHECK: addl $24, %eax
9         addl $24, %eax
10
11 // CHECK: movl %eax, 10(%ebp)
12         movl %eax, 10(%ebp)
13 // CHECK: movl %eax, 10(%ebp,%ebx)
14         movl %eax, 10(%ebp, %ebx)
15 // CHECK: movl %eax, 10(%ebp,%ebx,4)
16         movl %eax, 10(%ebp, %ebx, 4)
17 // CHECK: movl %eax, 10(,%ebx,4)
18         movl %eax, 10(, %ebx, 4)
19
20 // CHECK: movl 0, %eax        
21         movl 0, %eax
22 // CHECK: movl $0, %eax        
23         movl $0, %eax
24         
25 // CHECK: ret
26         ret
27         
28 // FIXME: Check that this matches SUB32ri8
29 // CHECK: subl $1, %eax
30         subl $1, %eax
31         
32 // FIXME: Check that this matches SUB32ri8
33 // CHECK: subl $-1, %eax
34         subl $-1, %eax
35         
36 // FIXME: Check that this matches SUB32ri
37 // CHECK: subl $256, %eax
38         subl $256, %eax
39
40 // FIXME: Check that this matches XOR64ri8
41 // CHECK: xorq $1, %rax
42         xorq $1, %rax
43         
44 // FIXME: Check that this matches XOR64ri32
45 // CHECK: xorq $256, %rax
46         xorq $256, %rax
47
48 // FIXME: Check that this matches SUB8rr
49 // CHECK: subb %al, %bl
50         subb %al, %bl
51
52 // FIXME: Check that this matches SUB16rr
53 // CHECK: subw %ax, %bx
54         subw %ax, %bx
55         
56 // FIXME: Check that this matches SUB32rr
57 // CHECK: subl %eax, %ebx
58         subl %eax, %ebx
59         
60 // FIXME: Check that this matches the correct instruction.
61 // CHECK: callq *%rax
62         call *%rax
63
64 // FIXME: Check that this matches the correct instruction.
65 // CHECK: shldl %cl, %eax, %ebx
66         shldl %cl, %eax, %ebx
67
68 // CHECK: shll $2, %eax
69         shll $2, %eax
70
71 // CHECK: shll $2, %eax
72         sall $2, %eax
73
74 // CHECK: rep
75 // CHECK: insb
76         rep;insb
77
78 // CHECK: rep
79 // CHECK: outsb
80         rep;outsb
81
82 // CHECK: rep
83 // CHECK: movsb
84         rep;movsb
85
86 // CHECK: rep
87 // CHECK: lodsb
88         rep;lodsb
89
90 // CHECK: rep
91 // CHECK: stosb
92         rep;stosb
93
94 // NOTE: repz and repe have the same opcode as rep
95 // CHECK: rep
96 // CHECK: cmpsb
97         repz;cmpsb
98
99 // NOTE: repnz has the same opcode as repne
100 // CHECK: repne
101 // CHECK: cmpsb
102         repnz;cmpsb
103
104 // NOTE: repe and repz have the same opcode as rep
105 // CHECK: rep
106 // CHECK: scasb
107         repe;scasb
108
109 // CHECK: repne
110 // CHECK: scasb
111         repne;scasb
112
113 // CHECK: lock
114 // CHECK: cmpxchgb %al, (%ebx)
115         lock;cmpxchgb %al, 0(%ebx)
116
117 // CHECK: cs
118 // CHECK: movb (%eax), %al
119         cs;movb 0(%eax), %al
120
121 // CHECK: ss
122 // CHECK: movb (%eax), %al
123         ss;movb 0(%eax), %al
124
125 // CHECK: ds
126 // CHECK: movb (%eax), %al
127         ds;movb 0(%eax), %al
128
129 // CHECK: es
130 // CHECK: movb (%eax), %al
131         es;movb 0(%eax), %al
132
133 // CHECK: fs
134 // CHECK: movb (%eax), %al
135         fs;movb 0(%eax), %al
136
137 // CHECK: gs
138 // CHECK: movb (%eax), %al
139         gs;movb 0(%eax), %al
140
141 // CHECK: fadd %st(0)
142 // CHECK: fadd %st(1)
143 // CHECK: fadd %st(7)
144
145 fadd %st(0)
146 fadd %st(1)
147 fadd %st(7)
148
149 // CHECK: leal 0, %eax
150         leal 0, %eax
151
152 // rdar://7986634 - Insensitivity on opcodes.
153 // CHECK: int3
154 INT3
155
156
157 // Allow scale factor without index register.
158 // CHECK: movaps        %xmm3, (%esi)
159 // CHECK-STDERR: warning: scale factor without index register is ignored
160 movaps %xmm3, (%esi, 2)
161
162 // CHECK: imull $12, %eax, %eax
163 imul $12, %eax
164
165 // CHECK: imull %ecx, %eax
166 imull %ecx, %eax
167
168
169 // rdar://8208481
170 // CHECK: outb  %al, $161
171 outb    %al, $161
172 // CHECK: outw  %ax, $128
173 outw    %ax, $128
174 // CHECK: inb   $161, %al
175 inb     $161, %al
176
177 // rdar://8017621
178 // CHECK: pushq $1
179 push $1
180
181 // rdar://8017530
182 // CHECK: sldtw 4
183 sldt    4
184
185 // rdar://8208499
186 // CHECK: cmovnew       %bx, %ax
187 cmovnz %bx, %ax
188 // CHECK: cmovneq       %rbx, %rax
189 cmovnzq %rbx, %rax
190
191
192 // rdar://8407928
193 // CHECK: inb   $127, %al
194 // CHECK: inw   %dx, %ax
195 // CHECK: outb  %al, $127
196 // CHECK: outw  %ax, %dx
197 // CHECK: inl   %dx, %eax
198 inb     $0x7f
199 inw     %dx
200 outb    $0x7f
201 outw    %dx
202 inl     %dx