// RUN: llvm-mc -triple x86_64-unknown-unknown %s > %t 2> %t.err // RUN: FileCheck < %t %s // RUN: FileCheck --check-prefix=CHECK-STDERR < %t.err %s // CHECK: subb %al, %al subb %al, %al // CHECK: addl $24, %eax addl $24, %eax // CHECK: movl %eax, 10(%ebp) movl %eax, 10(%ebp) // CHECK: movl %eax, 10(%ebp,%ebx) movl %eax, 10(%ebp, %ebx) // CHECK: movl %eax, 10(%ebp,%ebx,4) movl %eax, 10(%ebp, %ebx, 4) // CHECK: movl %eax, 10(,%ebx,4) movl %eax, 10(, %ebx, 4) // CHECK: movl 0, %eax movl 0, %eax // CHECK: movl $0, %eax movl $0, %eax // CHECK: ret ret // FIXME: Check that this matches SUB32ri8 // CHECK: subl $1, %eax subl $1, %eax // FIXME: Check that this matches SUB32ri8 // CHECK: subl $-1, %eax subl $-1, %eax // FIXME: Check that this matches SUB32ri // CHECK: subl $256, %eax subl $256, %eax // FIXME: Check that this matches XOR64ri8 // CHECK: xorq $1, %rax xorq $1, %rax // FIXME: Check that this matches XOR64ri32 // CHECK: xorq $256, %rax xorq $256, %rax // FIXME: Check that this matches SUB8rr // CHECK: subb %al, %bl subb %al, %bl // FIXME: Check that this matches SUB16rr // CHECK: subw %ax, %bx subw %ax, %bx // FIXME: Check that this matches SUB32rr // CHECK: subl %eax, %ebx subl %eax, %ebx // FIXME: Check that this matches the correct instruction. // CHECK: callq *%rax call *%rax // FIXME: Check that this matches the correct instruction. // CHECK: shldl %cl, %eax, %ebx shldl %cl, %eax, %ebx // CHECK: shll $2, %eax shll $2, %eax // CHECK: shll $2, %eax sall $2, %eax // CHECK: rep // CHECK: insb rep;insb // CHECK: rep // CHECK: outsb rep;outsb // CHECK: rep // CHECK: movsb rep;movsb // CHECK: rep // CHECK: lodsb rep;lodsb // CHECK: rep // CHECK: stosb rep;stosb // NOTE: repz and repe have the same opcode as rep // CHECK: rep // CHECK: cmpsb repz;cmpsb // NOTE: repnz has the same opcode as repne // CHECK: repne // CHECK: cmpsb repnz;cmpsb // NOTE: repe and repz have the same opcode as rep // CHECK: rep // CHECK: scasb repe;scasb // CHECK: repne // CHECK: scasb repne;scasb // CHECK: lock // CHECK: cmpxchgb %al, (%ebx) lock;cmpxchgb %al, 0(%ebx) // CHECK: cs // CHECK: movb (%eax), %al cs;movb 0(%eax), %al // CHECK: ss // CHECK: movb (%eax), %al ss;movb 0(%eax), %al // CHECK: ds // CHECK: movb (%eax), %al ds;movb 0(%eax), %al // CHECK: es // CHECK: movb (%eax), %al es;movb 0(%eax), %al // CHECK: fs // CHECK: movb (%eax), %al fs;movb 0(%eax), %al // CHECK: gs // CHECK: movb (%eax), %al gs;movb 0(%eax), %al // CHECK: fadd %st(0) // CHECK: fadd %st(1) // CHECK: fadd %st(7) fadd %st(0) fadd %st(1) fadd %st(7) // CHECK: leal 0, %eax leal 0, %eax // rdar://7986634 - Insensitivity on opcodes. // CHECK: int3 INT3 // Allow scale factor without index register. // CHECK: movaps %xmm3, (%esi) // CHECK-STDERR: warning: scale factor without index register is ignored movaps %xmm3, (%esi, 2) // CHECK: imull $12, %eax, %eax imul $12, %eax // CHECK: imull %ecx, %eax imull %ecx, %eax // rdar://8208481 // CHECK: outb %al, $161 outb %al, $161 // CHECK: outw %ax, $128 outw %ax, $128 // CHECK: inb $161, %al inb $161, %al // rdar://8017621 // CHECK: pushq $1 push $1 // rdar://8017530 // CHECK: sldtw 4 sldt 4 // rdar://8208499 // CHECK: cmovnew %bx, %ax cmovnz %bx, %ax // CHECK: cmovneq %rbx, %rax cmovnzq %rbx, %rax // rdar://8407928 // CHECK: inb $127, %al // CHECK: inw %dx, %ax // CHECK: outb %al, $127 // CHECK: outw %ax, %dx // CHECK: inl %dx, %eax inb $0x7f inw %dx outb $0x7f outw %dx inl %dx