1 // RUN: llvm-mc -triple i386-unknown-unknown --show-encoding %s | FileCheck %s
5 // CHECK: encoding: [0xf3,0x90]
8 // CHECK: encoding: [0x0f,0xae,0xf8]
11 // CHECK: encoding: [0x0f,0xae,0xe8]
14 // CHECK: encoding: [0x0f,0xae,0xf0]
17 // CHECK: encoding: [0x0f,0x01,0xc8]
20 // CHECK: encoding: [0x0f,0x01,0xc9]
24 // CHECK: encoding: [0x0f,0x01,0xc1]
27 // CHECK: encoding: [0x0f,0x01,0xc2]
30 // CHECK: encoding: [0x0f,0x01,0xc3]
33 // CHECK: encoding: [0x0f,0x01,0xc4]
36 // CHECK: encoding: [0x0f,0x01,0xf8]
40 // CHECK: encoding: [0x0f,0x01,0xf9]
43 // CHECK: movl %eax, 16(%ebp) # encoding: [0x89,0x45,0x10]
45 // CHECK: movl %eax, -16(%ebp) # encoding: [0x89,0x45,0xf0]
48 // CHECK: testb %bl, %cl # encoding: [0x84,0xcb]
51 // CHECK: cmpl %eax, %ebx # encoding: [0x39,0xc3]
54 // CHECK: addw %ax, %ax # encoding: [0x66,0x01,0xc0]
57 // CHECK: shrl %eax # encoding: [0xd1,0xe8]
60 // moffset forms of moves, rdar://7947184
61 movb 0, %al // CHECK: movb 0, %al # encoding: [0xa0,A,A,A,A]
62 movw 0, %ax // CHECK: movw 0, %ax # encoding: [0x66,0xa1,A,A,A,A]
63 movl 0, %eax // CHECK: movl 0, %eax # encoding: [0xa1,A,A,A,A]
68 // CHECK: encoding: [0xce]
71 // CHECK: encoding: [0xcc]
74 // CHECK: encoding: [0xcd,0x04]
77 // CHECK: encoding: [0xcd,0xff]
79 // CHECK: pushfl # encoding: [0x9c]
81 // CHECK: pushfl # encoding: [0x9c]
83 // CHECK: popfl # encoding: [0x9d]
85 // CHECK: popfl # encoding: [0x9d]
91 // CHECK: encoding: [0xc3]
94 // CHECK: cmoval %eax, %edx
95 // CHECK: encoding: [0x0f,0x47,0xd0]
98 // CHECK: cmovael %eax, %edx
99 // CHECK: encoding: [0x0f,0x43,0xd0]
102 // CHECK: cmovbel %eax, %edx
103 // CHECK: encoding: [0x0f,0x46,0xd0]
106 // CHECK: cmovbl %eax, %edx
107 // CHECK: encoding: [0x0f,0x42,0xd0]
110 // CHECK: cmovbel %eax, %edx
111 // CHECK: encoding: [0x0f,0x46,0xd0]
114 // CHECK: cmovbl %eax, %edx
115 // CHECK: encoding: [0x0f,0x42,0xd0]
118 // CHECK: cmovel %eax, %edx
119 // CHECK: encoding: [0x0f,0x44,0xd0]
122 // CHECK: cmovgl %eax, %edx
123 // CHECK: encoding: [0x0f,0x4f,0xd0]
126 // CHECK: cmovgel %eax, %edx
127 // CHECK: encoding: [0x0f,0x4d,0xd0]
130 // CHECK: cmovll %eax, %edx
131 // CHECK: encoding: [0x0f,0x4c,0xd0]
134 // CHECK: cmovlel %eax, %edx
135 // CHECK: encoding: [0x0f,0x4e,0xd0]
138 // CHECK: cmovbel %eax, %edx
139 // CHECK: encoding: [0x0f,0x46,0xd0]
142 // CHECK: cmovnel %eax, %edx
143 // CHECK: encoding: [0x0f,0x45,0xd0]
146 // CHECK: cmovael %eax, %edx
147 // CHECK: encoding: [0x0f,0x43,0xd0]
150 // CHECK: cmoval %eax, %edx
151 // CHECK: encoding: [0x0f,0x47,0xd0]
154 // CHECK: cmovael %eax, %edx
155 // CHECK: encoding: [0x0f,0x43,0xd0]
158 // CHECK: cmovnel %eax, %edx
159 // CHECK: encoding: [0x0f,0x45,0xd0]
162 // CHECK: cmovlel %eax, %edx
163 // CHECK: encoding: [0x0f,0x4e,0xd0]
166 // CHECK: cmovgel %eax, %edx
167 // CHECK: encoding: [0x0f,0x4d,0xd0]
170 // CHECK: cmovnel %eax, %edx
171 // CHECK: encoding: [0x0f,0x45,0xd0]
174 // CHECK: cmovlel %eax, %edx
175 // CHECK: encoding: [0x0f,0x4e,0xd0]
178 // CHECK: cmovll %eax, %edx
179 // CHECK: encoding: [0x0f,0x4c,0xd0]
182 // CHECK: cmovgel %eax, %edx
183 // CHECK: encoding: [0x0f,0x4d,0xd0]
186 // CHECK: cmovgl %eax, %edx
187 // CHECK: encoding: [0x0f,0x4f,0xd0]
190 // CHECK: cmovnol %eax, %edx
191 // CHECK: encoding: [0x0f,0x41,0xd0]
194 // CHECK: cmovnpl %eax, %edx
195 // CHECK: encoding: [0x0f,0x4b,0xd0]
198 // CHECK: cmovnsl %eax, %edx
199 // CHECK: encoding: [0x0f,0x49,0xd0]
202 // CHECK: cmovnel %eax, %edx
203 // CHECK: encoding: [0x0f,0x45,0xd0]
206 // CHECK: cmovol %eax, %edx
207 // CHECK: encoding: [0x0f,0x40,0xd0]
210 // CHECK: cmovpl %eax, %edx
211 // CHECK: encoding: [0x0f,0x4a,0xd0]
214 // CHECK: cmovsl %eax, %edx
215 // CHECK: encoding: [0x0f,0x48,0xd0]
218 // CHECK: cmovel %eax, %edx
219 // CHECK: encoding: [0x0f,0x44,0xd0]
222 // CHECK: cmpps $0, %xmm0, %xmm1
223 // CHECK: encoding: [0x0f,0xc2,0xc8,0x00]
224 cmpps $0, %xmm0, %xmm1
225 // CHECK: cmpps $0, (%eax), %xmm1
226 // CHECK: encoding: [0x0f,0xc2,0x08,0x00]
227 cmpps $0, 0(%eax), %xmm1
228 // CHECK: cmppd $0, %xmm0, %xmm1
229 // CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x00]
230 cmppd $0, %xmm0, %xmm1
231 // CHECK: cmppd $0, (%eax), %xmm1
232 // CHECK: encoding: [0x66,0x0f,0xc2,0x08,0x00]
233 cmppd $0, 0(%eax), %xmm1
234 // CHECK: cmpss $0, %xmm0, %xmm1
235 // CHECK: encoding: [0xf3,0x0f,0xc2,0xc8,0x00]
236 cmpss $0, %xmm0, %xmm1
237 // CHECK: cmpss $0, (%eax), %xmm1
238 // CHECK: encoding: [0xf3,0x0f,0xc2,0x08,0x00]
239 cmpss $0, 0(%eax), %xmm1
240 // CHECK: cmpsd $0, %xmm0, %xmm1
241 // CHECK: encoding: [0xf2,0x0f,0xc2,0xc8,0x00]
242 cmpsd $0, %xmm0, %xmm1
243 // CHECK: cmpsd $0, (%eax), %xmm1
244 // CHECK: encoding: [0xf2,0x0f,0xc2,0x08,0x00]
245 cmpsd $0, 0(%eax), %xmm1
247 // Check matching of instructions which embed the SSE comparison code.
249 // CHECK: cmpps $0, %xmm0, %xmm1
250 // CHECK: encoding: [0x0f,0xc2,0xc8,0x00]
253 // CHECK: cmppd $1, %xmm0, %xmm1
254 // CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x01]
257 // CHECK: cmpss $2, %xmm0, %xmm1
258 // CHECK: encoding: [0xf3,0x0f,0xc2,0xc8,0x02]
261 // CHECK: cmppd $3, %xmm0, %xmm1
262 // CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x03]
263 cmpunordpd %xmm0, %xmm1
265 // CHECK: cmpps $4, %xmm0, %xmm1
266 // CHECK: encoding: [0x0f,0xc2,0xc8,0x04]
267 cmpneqps %xmm0, %xmm1
269 // CHECK: cmppd $5, %xmm0, %xmm1
270 // CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x05]
271 cmpnltpd %xmm0, %xmm1
273 // CHECK: cmpss $6, %xmm0, %xmm1
274 // CHECK: encoding: [0xf3,0x0f,0xc2,0xc8,0x06]
275 cmpnless %xmm0, %xmm1
277 // CHECK: cmpsd $7, %xmm0, %xmm1
278 // CHECK: encoding: [0xf2,0x0f,0xc2,0xc8,0x07]
279 cmpordsd %xmm0, %xmm1
282 // CHECK: fmul %st(0)
283 // CHECK: encoding: [0xd8,0xc8]
286 // CHECK: fadd %st(0)
287 // CHECK: encoding: [0xd8,0xc0]
290 // CHECK: fsub %st(0)
291 // CHECK: encoding: [0xd8,0xe0]
294 // CHECK: fsubr %st(0)
295 // CHECK: encoding: [0xd8,0xe8]
298 // CHECK: fdivr %st(0)
299 // CHECK: encoding: [0xd8,0xf8]
302 // CHECK: fdiv %st(0)
303 // CHECK: encoding: [0xd8,0xf0]
307 // CHECK: movl %cs, %eax
308 // CHECK: encoding: [0x8c,0xc8]
311 // CHECK: movw %cs, %ax
312 // CHECK: encoding: [0x66,0x8c,0xc8]
315 // CHECK: movl %cs, (%eax)
316 // CHECK: encoding: [0x8c,0x08]
319 // CHECK: movw %cs, (%eax)
320 // CHECK: encoding: [0x66,0x8c,0x08]
323 // CHECK: movl %eax, %cs
324 // CHECK: encoding: [0x8e,0xc8]
327 // CHECK: movl (%eax), %cs
328 // CHECK: encoding: [0x8e,0x08]
331 // CHECK: movw (%eax), %cs
332 // CHECK: encoding: [0x66,0x8e,0x08]
336 // CHECK: movl %cr0, %eax
337 // CHECK: encoding: [0x0f,0x20,0xc0]
340 // CHECK: movl %cr1, %eax
341 // CHECK: encoding: [0x0f,0x20,0xc8]
344 // CHECK: movl %cr2, %eax
345 // CHECK: encoding: [0x0f,0x20,0xd0]
348 // CHECK: movl %cr3, %eax
349 // CHECK: encoding: [0x0f,0x20,0xd8]
352 // CHECK: movl %cr4, %eax
353 // CHECK: encoding: [0x0f,0x20,0xe0]
356 // CHECK: movl %dr0, %eax
357 // CHECK: encoding: [0x0f,0x21,0xc0]
360 // CHECK: movl %dr1, %eax
361 // CHECK: encoding: [0x0f,0x21,0xc8]
364 // CHECK: movl %dr1, %eax
365 // CHECK: encoding: [0x0f,0x21,0xc8]
368 // CHECK: movl %dr2, %eax
369 // CHECK: encoding: [0x0f,0x21,0xd0]
372 // CHECK: movl %dr3, %eax
373 // CHECK: encoding: [0x0f,0x21,0xd8]
376 // CHECK: movl %dr4, %eax
377 // CHECK: encoding: [0x0f,0x21,0xe0]
380 // CHECK: movl %dr5, %eax
381 // CHECK: encoding: [0x0f,0x21,0xe8]
384 // CHECK: movl %dr6, %eax
385 // CHECK: encoding: [0x0f,0x21,0xf0]
388 // CHECK: movl %dr7, %eax
389 // CHECK: encoding: [0x0f,0x21,0xf8]
394 // CHECK: encoding: [0x9b]
398 // CHECK: [0x65,0x8b,0x05,0x7c,0x00,0x00,0x00]
399 // FIXME: This is a correct bug poor encoding: Use 65 a1 7c 00 00 00
403 // CHECK: encoding: [0x60]
407 // CHECK: encoding: [0x61]
411 // CHECK: encoding: [0x60]
415 // CHECK: encoding: [0x61]
418 // CHECK: jmpl *8(%eax)
419 // CHECK: encoding: [0xff,0x60,0x08]