Index: llvm/trunk/lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp =================================================================== --- llvm/trunk/lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp +++ llvm/trunk/lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp @@ -54,12 +54,12 @@ if (TSFlags & X86II::LOCK) OS << "\tlock\t"; if (!(TSFlags & X86II::LOCK) && Flags & X86::IP_HAS_LOCK) - OS << "\tlock\n"; + OS << "\tlock\t"; if (Flags & X86::IP_HAS_REPEAT_NE) - OS << "\trepne\n"; + OS << "\trepne\t"; else if (Flags & X86::IP_HAS_REPEAT) - OS << "\trep\n"; + OS << "\trep\t"; // Output CALLpcrel32 as "callq" in 64-bit mode. // In Intel annotation it's always emitted as "call". Index: llvm/trunk/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp =================================================================== --- llvm/trunk/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp +++ llvm/trunk/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp @@ -41,13 +41,13 @@ uint64_t TSFlags = Desc.TSFlags; if (TSFlags & X86II::LOCK) - OS << "\tlock\n"; + OS << "\tlock\t"; unsigned Flags = MI->getFlags(); if (Flags & X86::IP_HAS_REPEAT_NE) - OS << "\trepne\n"; + OS << "\trepne\t"; else if (Flags & X86::IP_HAS_REPEAT) - OS << "\trep\n"; + OS << "\trep\t"; printInstruction(MI, OS); Index: llvm/trunk/test/CodeGen/X86/inline-asm-A-constraint.ll =================================================================== --- llvm/trunk/test/CodeGen/X86/inline-asm-A-constraint.ll +++ llvm/trunk/test/CodeGen/X86/inline-asm-A-constraint.ll @@ -19,8 +19,7 @@ %.fca.1.insert = insertvalue { i64, i64 } %.fca.0.insert, i64 %retval.sroa.2.0.extract.trunc, 1 ret { i64, i64 } %.fca.1.insert } -; CHECK: lock -; CHECK-NEXT: cmpxchg16b +; CHECK: lock cmpxchg16b attributes #0 = { nounwind uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #1 = { nounwind } Index: llvm/trunk/test/Instrumentation/AddressSanitizer/X86/asm_rep_movs.ll =================================================================== --- llvm/trunk/test/Instrumentation/AddressSanitizer/X86/asm_rep_movs.ll +++ llvm/trunk/test/Instrumentation/AddressSanitizer/X86/asm_rep_movs.ll @@ -39,8 +39,7 @@ ; CHECK: [[B]]: ; CHECK-NEXT: popfq -; CHECK: rep -; CHECK-NEXT: movsb (%rsi), %es:(%rdi) +; CHECK: rep movsb (%rsi), %es:(%rdi) ; Function Attrs: nounwind sanitize_address uwtable define void @rep_movs_1b(i8* %dst, i8* %src, i64 %n) #0 { @@ -73,8 +72,7 @@ ; CHECK: [[Q]]: ; CHECK-NEXT: popfq -; CHECK: rep -; CHECK-NEXT: movsq (%rsi), %es:(%rdi) +; CHECK: rep movsq (%rsi), %es:(%rdi) ; Function Attrs: nounwind sanitize_address uwtable define void @rep_movs_8b(i64* %dst, i64* %src, i64 %n) #0 { Index: llvm/trunk/test/MC/Disassembler/X86/prefixes-i386.txt =================================================================== --- llvm/trunk/test/MC/Disassembler/X86/prefixes-i386.txt +++ llvm/trunk/test/MC/Disassembler/X86/prefixes-i386.txt @@ -3,85 +3,59 @@ # CHECK: movl %fs:24, %eax 0x64 0xa1 0x18 0x00 0x00 0x00 # mov eax, dword ptr fs:[18h] -# CHECK: rep -# CHECK-NEXT: insb %dx, %es:(%edi) +# CHECK: rep insb %dx, %es:(%edi) 0xf3 0x6c #rep ins -# CHECK: rep -# CHECK-NEXT: insl %dx, %es:(%edi) +# CHECK: rep insl %dx, %es:(%edi) 0xf3 0x6d #rep ins -# CHECK: rep -# CHECK-NEXT: movsb (%esi), %es:(%edi) +# CHECK: rep movsb (%esi), %es:(%edi) 0xf3 0xa4 #rep movs -# CHECK: rep -# CHECK-NEXT: movsl (%esi), %es:(%edi) +# CHECK: rep movsl (%esi), %es:(%edi) 0xf3 0xa5 #rep movs -# CHECK: rep -# CHECK-NEXT: outsb (%esi), %dx +# CHECK: rep outsb (%esi), %dx 0xf3 0x6e #rep outs -# CHECK: rep -# CHECK-NEXT: outsl (%esi), %dx +# CHECK: rep outsl (%esi), %dx 0xf3 0x6f #rep outs -# CHECK: rep -# CHECK-NEXT: lodsb (%esi), %al +# CHECK: rep lodsb (%esi), %al 0xf3 0xac #rep lods -# CHECK: rep -# CHECK-NEXT: lodsl (%esi), %eax +# CHECK: rep lodsl (%esi), %eax 0xf3 0xad #rep lods -# CHECK: rep -# CHECK-NEXT: stosb %al, %es:(%edi) +# CHECK: rep stosb %al, %es:(%edi) 0xf3 0xaa #rep stos -# CHECK: rep -# CHECK-NEXT: stosl %eax, %es:(%edi) +# CHECK: rep stosl %eax, %es:(%edi) 0xf3 0xab #rep stos -# CHECK: rep -# CHECK-NEXT: cmpsb %es:(%edi), (%esi) +# CHECK: rep cmpsb %es:(%edi), (%esi) 0xf3 0xa6 #rep cmps -# CHECK: rep -# CHECK-NEXT: cmpsl %es:(%edi), (%esi) +# CHECK: rep cmpsl %es:(%edi), (%esi) 0xf3 0xa7 #repe cmps -# CHECK: rep -# CHECK-NEXT: scasb %es:(%edi), %al +# CHECK: rep scasb %es:(%edi), %al 0xf3 0xae #repe scas -# CHECK: rep -# CHECK-NEXT: scasl %es:(%edi), %eax +# CHECK: rep scasl %es:(%edi), %eax 0xf3 0xaf #repe scas -# CHECK: repne -# CHECK-NEXT: cmpsb %es:(%edi), (%esi) +# CHECK: repne cmpsb %es:(%edi), (%esi) 0xf2 0xa6 #repne cmps -# CHECK: repne -# CHECK-NEXT: cmpsl %es:(%edi), (%esi) +# CHECK: repne cmpsl %es:(%edi), (%esi) 0xf2 0xa7 #repne cmps -# CHECK: repne -# CHECK-NEXT: scasb %es:(%edi), %al +# CHECK: repne scasb %es:(%edi), %al 0xf2 0xae #repne scas -# CHECK: repne -# CHECK-NEXT: scasl %es:(%edi), %eax +# CHECK: repne scasl %es:(%edi), %eax 0xf2 0xaf #repne scas -# CHECK: repne -# CHECK-NEXT: scasw %es:(%edi), %ax +# CHECK: repne scasw %es:(%edi), %ax 0xf2 0x66 0xaf -# CHECK: repne -# CHECK-NEXT: scasw %es:(%edi), %ax +# CHECK: repne scasw %es:(%edi), %ax 0x66 0xf2 0xaf -# CHECK: rep -# CHECK-NEXT: scasw %es:(%edi), %ax +# CHECK: rep scasw %es:(%edi), %ax 0xf3 0x66 0xaf -# CHECK: rep -# CHECK-NEXT: scasw %es:(%edi), %ax +# CHECK: rep scasw %es:(%edi), %ax 0x66 0xf3 0xaf -# CHECK: repne -# CHECK: insw %dx, %es:(%edi) +# CHECK: repne insw %dx, %es:(%edi) 0xf2 0x66 0x6d -# CHECK: repne -# CHECK: insw %dx, %es:(%edi) +# CHECK: repne insw %dx, %es:(%edi) 0x66 0xf2 0x6d -# CHECK: rep -# CHECK: insw %dx, %es:(%edi) +# CHECK: rep insw %dx, %es:(%edi) 0xf3 0x66 0x6d -# CHECK: rep -# CHECK: insw %dx, %es:(%edi) +# CHECK: rep insw %dx, %es:(%edi) 0x66 0xf3 0x6d Index: llvm/trunk/test/MC/Disassembler/X86/prefixes-x86_64.txt =================================================================== --- llvm/trunk/test/MC/Disassembler/X86/prefixes-x86_64.txt +++ llvm/trunk/test/MC/Disassembler/X86/prefixes-x86_64.txt @@ -9,30 +9,22 @@ # CHECK: mulsd %xmm7, %xmm7 0xf2 0x66 0x0f 0x59 0xff -# CHECK: repne -# CHECK-NEXT: scasw %es:(%rdi), %ax +# CHECK: repne scasw %es:(%rdi), %ax 0xf2 0x66 0xaf -# CHECK: rep -# CHECK-NEXT: scasw %es:(%rdi), %ax +# CHECK: repne scasw %es:(%rdi), %ax 0x66 0xf2 0xaf -# CHECK: rep -# CHECK-NEXT: scasw %es:(%rdi), %ax +# CHECK: rep scasw %es:(%rdi), %ax 0xf3 0x66 0xaf -# CHECK: rep -# CHECK-NEXT: scasw %es:(%rdi), %ax +# CHECK: rep scasw %es:(%rdi), %ax 0x66 0xf3 0xaf -# CHECK: repne -# CHECK: insw %dx, %es:(%rdi) +# CHECK: repne insw %dx, %es:(%rdi) 0xf2 0x66 0x6d -# CHECK: repne -# CHECK: insw %dx, %es:(%rdi) +# CHECK: repne insw %dx, %es:(%rdi) 0x66 0xf2 0x6d -# CHECK: rep -# CHECK: insw %dx, %es:(%rdi) +# CHECK: rep insw %dx, %es:(%rdi) 0xf3 0x66 0x6d -# CHECK: rep -# CHECK: insw %dx, %es:(%rdi) +# CHECK: rep insw %dx, %es:(%rdi) 0x66 0xf3 0x6d Index: llvm/trunk/test/MC/Disassembler/X86/prefixes.txt =================================================================== --- llvm/trunk/test/MC/Disassembler/X86/prefixes.txt +++ llvm/trunk/test/MC/Disassembler/X86/prefixes.txt @@ -1,73 +1,53 @@ # RUN: llvm-mc --disassemble %s -triple=x86_64 | FileCheck %s -# CHECK: rep -# CHECK-NEXT: insb %dx, %es:(%rdi) +# CHECK: rep insb %dx, %es:(%rdi) 0xf3 0x6c #rep ins -# CHECK: rep -# CHECK-NEXT: insl %dx, %es:(%rdi) +# CHECK: rep insl %dx, %es:(%rdi) 0xf3 0x6d #rep ins -# CHECK: rep -# CHECK-NEXT: movsb (%rsi), %es:(%rdi) +# CHECK: rep movsb (%rsi), %es:(%rdi) 0xf3 0xa4 #rep movs -# CHECK: rep -# CHECK-NEXT: movsl (%rsi), %es:(%rdi) +# CHECK: rep movsl (%rsi), %es:(%rdi) 0xf3 0xa5 #rep movs -# CHECK: rep -# CHECK-NEXT: outsb (%rsi), %dx +# CHECK: rep outsb (%rsi), %dx 0xf3 0x6e #rep outs -# CHECK: rep -# CHECK-NEXT: outsl (%rsi), %dx +# CHECK: rep outsl (%rsi), %dx 0xf3 0x6f #rep outs -# CHECK: rep -# CHECK-NEXT: lodsb (%rsi), %al +# CHECK: rep lodsb (%rsi), %al 0xf3 0xac #rep lods -# CHECK: rep -# CHECK-NEXT: lodsl (%rsi), %eax +# CHECK: rep lodsl (%rsi), %eax 0xf3 0xad #rep lods -# CHECK: rep -# CHECK-NEXT: stosb %al, %es:(%rdi) +# CHECK: rep stosb %al, %es:(%rdi) 0xf3 0xaa #rep stos -# CHECK: rep -# CHECK-NEXT: stosl %eax, %es:(%rdi) +# CHECK: rep stosl %eax, %es:(%rdi) 0xf3 0xab #rep stos -# CHECK: rep -# CHECK-NEXT: cmpsb %es:(%rdi), (%rsi) +# CHECK: rep cmpsb %es:(%rdi), (%rsi) 0xf3 0xa6 #rep cmps -# CHECK: rep -# CHECK-NEXT: cmpsl %es:(%rdi), (%rsi) +# CHECK: rep cmpsl %es:(%rdi), (%rsi) 0xf3 0xa7 #repe cmps -# CHECK: rep -# CHECK-NEXT: scasb %es:(%rdi), %al +# CHECK: rep scasb %es:(%rdi), %al 0xf3 0xae #repe scas -# CHECK: rep -# CHECK-NEXT: scasl %es:(%rdi), %eax +# CHECK: rep scasl %es:(%rdi), %eax 0xf3 0xaf #repe scas -# CHECK: repne -# CHECK-NEXT: cmpsb %es:(%rdi), (%rsi) +# CHECK: repne cmpsb %es:(%rdi), (%rsi) 0xf2 0xa6 #repne cmps -# CHECK: repne -# CHECK-NEXT: cmpsl %es:(%rdi), (%rsi) +# CHECK: repne cmpsl %es:(%rdi), (%rsi) 0xf2 0xa7 #repne cmps -# CHECK: repne -# CHECK-NEXT: scasb %es:(%rdi), %al +# CHECK: repne scasb %es:(%rdi), %al 0xf2 0xae #repne scas -# CHECK: repne -# CHECK-NEXT: scasl %es:(%rdi), %eax +# CHECK: repne scasl %es:(%rdi), %eax 0xf2 0xaf #repne scas # CHECK: lock -# CHECK-NEXT: orl $16, %fs:776 +# CHECK-NEXT: orl $16, %fs:776 0xf0 0x64 0x83 0x0c 0x25 0x08 0x03 0x00 0x00 0x10 # CHECK: movq %fs:768, %rdi 0x64 0x48 0x8b 0x3c 0x25 0x00 0x03 0x00 0x00 -# CHECK: rep -# CHECK-NEXT: stosq %rax, %es:(%rdi) +# CHECK: rep stosq %rax, %es:(%rdi) 0xf3 0x48 0xab -# CHECK: rep -# CHECK-NEXT: stosq %rax, %es:(%edi) +# CHECK: rep stosq %rax, %es:(%edi) 0xf3 0x67 0x48 0xab # CHECK: movl 32(%rbp), %eax @@ -104,11 +84,9 @@ 0x66,0x83,0xc0,0xf4 # Test that multiple redundant prefixes work (redundant, but valid x86). -# CHECK: rep -# CHECK-NEXT: stosq +# CHECK: rep stosq 0xf3 0xf3 0x48 0xab - # Test that we can disassembler control registers above CR8 # CHECK: movq %cr15, %rax 0x44 0x0f 0x20 0xf8 Index: llvm/trunk/test/MC/Disassembler/X86/simple-tests.txt =================================================================== --- llvm/trunk/test/MC/Disassembler/X86/simple-tests.txt +++ llvm/trunk/test/MC/Disassembler/X86/simple-tests.txt @@ -851,14 +851,11 @@ 0xf0 0x48 0x0f 0xc1 0xcb # rdar://13493622 lldb doesn't print the x86 rep/repne prefix when disassembling -# CHECK: repne -# CHECK-NEXT: movsl +# CHECK: repne movsl 0xf2 0xa5 -# CHECK: repne -# CHECK-NEXT: movsq +# CHECK: repne movsq 0xf2 0x48 0xa5 -# CHECK: repne -# CHECK-NEXT: movb $0, (%rax) +# CHECK: repne movb $0, (%rax) 0xf2 0xc6 0x0 0x0 # rdar://11019859 Support 2013 Haswell RTM instructions and HLE prefixes