[llvm] r192750 - Enable MI Sched for x86.

Eric Christopher echristo at gmail.com
Tue Oct 15 16:43:57 PDT 2013


Grats on the work, a long time coming!

Beware the incoming register allocation bugs ;)

-eric

On Tue, Oct 15, 2013 at 4:33 PM, Andrew Trick <atrick at apple.com> wrote:
> Author: atrick
> Date: Tue Oct 15 18:33:07 2013
> New Revision: 192750
>
> URL: http://llvm.org/viewvc/llvm-project?rev=192750&view=rev
> Log:
> Enable MI Sched for x86.
>
> This changes the SelectionDAG scheduling preference to source
> order. Soon, the SelectionDAG scheduler can be bypassed saving
> a nice chunk of compile time.
>
> Performance differences that result from this change are often a
> consequence of register coalescing. The register coalescer is far from
> perfect. Bugs can be filed for deficiencies.
>
> On x86 SandyBridge/Haswell, the source order schedule is often
> preserved, particularly for small blocks.
>
> Register pressure is generally improved over the SD scheduler's ILP
> mode. However, we are still able to handle large blocks that require
> latency hiding, unlike the SD scheduler's BURR mode. MI scheduler also
> attempts to discover the critical path in single-block loops and
> adjust heuristics accordingly.
>
> The MI scheduler relies on the new machine model. This is currently
> unimplemented for AVX, so we may not be generating the best code yet.
>
> Unit tests are updated so they don't depend on SD scheduling heuristics.
>
> Modified:
>     llvm/trunk/lib/Target/X86/X86Subtarget.h
>     llvm/trunk/test/CodeGen/X86/2006-05-02-InstrSched1.ll
>     llvm/trunk/test/CodeGen/X86/2007-01-08-InstrSched.ll
>     llvm/trunk/test/CodeGen/X86/2009-02-26-MachineLICMBug.ll
>     llvm/trunk/test/CodeGen/X86/2010-02-19-TailCallRetAddrBug.ll
>     llvm/trunk/test/CodeGen/X86/2010-09-17-SideEffectsInChain.ll
>     llvm/trunk/test/CodeGen/X86/2011-10-19-LegelizeLoad.ll
>     llvm/trunk/test/CodeGen/X86/2012-04-26-sdglue.ll
>     llvm/trunk/test/CodeGen/X86/3addr-16bit.ll
>     llvm/trunk/test/CodeGen/X86/StackColoring.ll
>     llvm/trunk/test/CodeGen/X86/abi-isel.ll
>     llvm/trunk/test/CodeGen/X86/add.ll
>     llvm/trunk/test/CodeGen/X86/alloca-align-rounding.ll
>     llvm/trunk/test/CodeGen/X86/avx-arith.ll
>     llvm/trunk/test/CodeGen/X86/avx-intel-ocl.ll
>     llvm/trunk/test/CodeGen/X86/avx-shuffle.ll
>     llvm/trunk/test/CodeGen/X86/avx512-cvt.ll
>     llvm/trunk/test/CodeGen/X86/avx512-mask-op.ll
>     llvm/trunk/test/CodeGen/X86/break-anti-dependencies.ll
>     llvm/trunk/test/CodeGen/X86/bt.ll
>     llvm/trunk/test/CodeGen/X86/byval7.ll
>     llvm/trunk/test/CodeGen/X86/chain_order.ll
>     llvm/trunk/test/CodeGen/X86/cmov.ll
>     llvm/trunk/test/CodeGen/X86/commute-two-addr.ll
>     llvm/trunk/test/CodeGen/X86/fast-isel-mem.ll
>     llvm/trunk/test/CodeGen/X86/fastcc.ll
>     llvm/trunk/test/CodeGen/X86/fold-load.ll
>     llvm/trunk/test/CodeGen/X86/fold-pcmpeqd-2.ll
>     llvm/trunk/test/CodeGen/X86/full-lsr.ll
>     llvm/trunk/test/CodeGen/X86/gather-addresses.ll
>     llvm/trunk/test/CodeGen/X86/ghc-cc.ll
>     llvm/trunk/test/CodeGen/X86/ghc-cc64.ll
>     llvm/trunk/test/CodeGen/X86/hipe-cc.ll
>     llvm/trunk/test/CodeGen/X86/hipe-cc64.ll
>     llvm/trunk/test/CodeGen/X86/lea-recursion.ll
>     llvm/trunk/test/CodeGen/X86/lea.ll
>     llvm/trunk/test/CodeGen/X86/load-slice.ll
>     llvm/trunk/test/CodeGen/X86/lsr-loop-exit-cond.ll
>     llvm/trunk/test/CodeGen/X86/masked-iv-safe.ll
>     llvm/trunk/test/CodeGen/X86/memcpy-2.ll
>     llvm/trunk/test/CodeGen/X86/pmul.ll
>     llvm/trunk/test/CodeGen/X86/pr14088.ll
>     llvm/trunk/test/CodeGen/X86/pr1505b.ll
>     llvm/trunk/test/CodeGen/X86/pr16031.ll
>     llvm/trunk/test/CodeGen/X86/pre-ra-sched.ll
>     llvm/trunk/test/CodeGen/X86/rdrand.ll
>     llvm/trunk/test/CodeGen/X86/rdseed.ll
>     llvm/trunk/test/CodeGen/X86/segmented-stacks-dynamic.ll
>     llvm/trunk/test/CodeGen/X86/select.ll
>     llvm/trunk/test/CodeGen/X86/shift-bmi2.ll
>     llvm/trunk/test/CodeGen/X86/sink-hoist.ll
>     llvm/trunk/test/CodeGen/X86/sse2.ll
>     llvm/trunk/test/CodeGen/X86/store-narrow.ll
>     llvm/trunk/test/CodeGen/X86/tailcall-largecode.ll
>     llvm/trunk/test/CodeGen/X86/test-nofold.ll
>     llvm/trunk/test/CodeGen/X86/trunc-to-bool.ll
>     llvm/trunk/test/CodeGen/X86/v-binop-widen.ll
>     llvm/trunk/test/CodeGen/X86/v-binop-widen2.ll
>     llvm/trunk/test/CodeGen/X86/vec_shuffle-27.ll
>     llvm/trunk/test/CodeGen/X86/vec_shuffle-39.ll
>     llvm/trunk/test/CodeGen/X86/widen_cast-1.ll
>     llvm/trunk/test/CodeGen/X86/win64_alloca_dynalloca.ll
>     llvm/trunk/test/CodeGen/X86/x86-64-psub.ll
>     llvm/trunk/test/CodeGen/X86/x86-shifts.ll
>     llvm/trunk/test/CodeGen/X86/zext-fold.ll
>     llvm/trunk/test/CodeGen/X86/zext-sext.ll
>     llvm/trunk/test/DebugInfo/X86/dbg-value-dag-combine.ll
>
> Modified: llvm/trunk/lib/Target/X86/X86Subtarget.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86Subtarget.h?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/X86Subtarget.h (original)
> +++ llvm/trunk/lib/Target/X86/X86Subtarget.h Tue Oct 15 18:33:07 2013
> @@ -383,11 +383,14 @@ public:
>    /// memset with zero passed as the second argument. Otherwise it
>    /// returns null.
>    const char *getBZeroEntry() const;
> -
> +
>    /// This function returns true if the target has sincos() routine in its
>    /// compiler runtime or math libraries.
>    bool hasSinCos() const;
>
> +  /// Enable the MachineScheduler pass for all X86 subtargets.
> +  bool enableMachineScheduler() const LLVM_OVERRIDE { return true; }
> +
>    /// enablePostRAScheduler - run for Atom optimization.
>    bool enablePostRAScheduler(CodeGenOpt::Level OptLevel,
>                               TargetSubtargetInfo::AntiDepBreakMode& Mode,
>
> Modified: llvm/trunk/test/CodeGen/X86/2006-05-02-InstrSched1.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/2006-05-02-InstrSched1.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/2006-05-02-InstrSched1.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/2006-05-02-InstrSched1.ll Tue Oct 15 18:33:07 2013
> @@ -1,7 +1,10 @@
>  ; REQUIRES: asserts
>  ; RUN: llc < %s -march=x86 -relocation-model=static -stats 2>&1 | \
> -; RUN:   grep asm-printer | grep 14
> +; RUN:   grep asm-printer | grep 16
>  ;
> +; It's possible to schedule this in 14 instructions by avoiding
> +; callee-save registers, but the scheduler isn't currently that
> +; conervative with registers.
>  @size20 = external global i32          ; <i32*> [#uses=1]
>  @in5 = external global i8*             ; <i8**> [#uses=1]
>
> @@ -21,4 +24,3 @@ define i32 @compare(i8* %a, i8* %b) noun
>  }
>
>  declare i32 @memcmp(i8*, i8*, i32)
> -
>
> Modified: llvm/trunk/test/CodeGen/X86/2007-01-08-InstrSched.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/2007-01-08-InstrSched.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/2007-01-08-InstrSched.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/2007-01-08-InstrSched.ll Tue Oct 15 18:33:07 2013
> @@ -13,10 +13,10 @@ define float @foo(float %x) nounwind {
>
>  ; CHECK: mulss
>  ; CHECK: mulss
> -; CHECK: addss
>  ; CHECK: mulss
> -; CHECK: addss
>  ; CHECK: mulss
>  ; CHECK: addss
> +; CHECK: addss
> +; CHECK: addss
>  ; CHECK: ret
>  }
>
> Modified: llvm/trunk/test/CodeGen/X86/2009-02-26-MachineLICMBug.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/2009-02-26-MachineLICMBug.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/2009-02-26-MachineLICMBug.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/2009-02-26-MachineLICMBug.ll Tue Oct 15 18:33:07 2013
> @@ -17,9 +17,9 @@ bb4:          ; preds = %bb.i, %bb26, %bb4, %ent
>  ; CHECK: %bb4
>  ; CHECK: xorl
>  ; CHECK: callq
> -; CHECK: movq
>  ; CHECK: xorl
>  ; CHECK: xorl
> +; CHECK: movq
>
>         %0 = call i32 (...)* @xxGetOffsetForCode(i32 undef) nounwind            ; <i32> [#uses=0]
>         %ins = or i64 %p, 2097152               ; <i64> [#uses=1]
>
> Modified: llvm/trunk/test/CodeGen/X86/2010-02-19-TailCallRetAddrBug.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/2010-02-19-TailCallRetAddrBug.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/2010-02-19-TailCallRetAddrBug.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/2010-02-19-TailCallRetAddrBug.ll Tue Oct 15 18:33:07 2013
> @@ -1,9 +1,9 @@
> -; RUN: llc -mcpu=generic -mtriple=i386-apple-darwin -tailcallopt < %s | FileCheck %s
> +; RUN: llc -mcpu=generic -mtriple=i386-apple-darwin -tailcallopt -enable-misched=false < %s | FileCheck %s
>  ; Check that lowered argumens do not overwrite the return address before it is moved.
>  ; Bug 6225
>  ;
>  ; If a call is a fastcc tail call and tail call optimization is enabled, the
> -; caller frame is replaced by the callee frame. This can require that arguments are
> +; caller frame is replaced by the callee frame. This can require that arguments are
>  ; placed on the former return address stack slot. Special care needs to be taken
>  ; taken that the return address is moved / or stored in a register before
>  ; lowering of arguments potentially overwrites the value.
> @@ -51,5 +51,3 @@ false:
>    tail call fastcc void @l298(i32 %r10, i32 %r9, i32 %r4) noreturn nounwind
>    ret void
>  }
> -
> -
>
> Modified: llvm/trunk/test/CodeGen/X86/2010-09-17-SideEffectsInChain.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/2010-09-17-SideEffectsInChain.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/2010-09-17-SideEffectsInChain.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/2010-09-17-SideEffectsInChain.ll Tue Oct 15 18:33:07 2013
> @@ -19,8 +19,8 @@ entry:
>  }
>
>  ; CHECK: movq  ___stack_chk_guard at GOTPCREL(%rip)
> -; CHECK: movb   38(%rsp), [[R0:%.+]]
> -; CHECK: movb   8(%rsp), [[R1:%.+]]
> -; CHECK: movb   [[R1]], 8(%rsp)
> -; CHECK: movb   [[R0]], 38(%rsp)
> +; CHECK: movb   (%rsp), [[R1:%.+]]
> +; CHECK: movb   30(%rsp), [[R0:%.+]]
> +; CHECK: movb   [[R1]], (%rsp)
> +; CHECK: movb   [[R0]], 30(%rsp)
>  ; CHECK: callq ___stack_chk_fail
>
> Modified: llvm/trunk/test/CodeGen/X86/2011-10-19-LegelizeLoad.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/2011-10-19-LegelizeLoad.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/2011-10-19-LegelizeLoad.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/2011-10-19-LegelizeLoad.ll Tue Oct 15 18:33:07 2013
> @@ -16,8 +16,8 @@ target triple = "x86_64-unknown-linux-gn
>  ; CHECK: main
>  define i32 @main() nounwind uwtable {
>  entry:
> -; CHECK: pmovsxbq  j(%rip), %
>  ; CHECK: pmovsxbq  i(%rip), %
> +; CHECK: pmovsxbq  j(%rip), %
>    %0 = load <2 x i8>* @i, align 8
>    %1 = load <2 x i8>* @j, align 8
>    %div = sdiv <2 x i8> %1, %0
> @@ -25,4 +25,3 @@ entry:
>    ret i32 0
>  ; CHECK: ret
>  }
> -
>
> Modified: llvm/trunk/test/CodeGen/X86/2012-04-26-sdglue.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/2012-04-26-sdglue.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/2012-04-26-sdglue.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/2012-04-26-sdglue.ll Tue Oct 15 18:33:07 2013
> @@ -5,8 +5,8 @@
>  ; It's hard to test for the ISEL condition because CodeGen optimizes
>  ; away the bugpointed code. Just ensure the basics are still there.
>  ;CHECK-LABEL: func:
> -;CHECK: vxorps
> -;CHECK: vinsertf128
> +;CHECK: vpxor
> +;CHECK: vinserti128
>  ;CHECK: vpshufd
>  ;CHECK: vpshufd
>  ;CHECK: vmulps
>
> Modified: llvm/trunk/test/CodeGen/X86/3addr-16bit.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/3addr-16bit.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/3addr-16bit.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/3addr-16bit.ll Tue Oct 15 18:33:07 2013
> @@ -34,7 +34,8 @@ entry:
>
>  ; 64BIT-LABEL:     t2:
>  ; 64BIT-NOT: movw %si, %ax
> -; 64BIT:     leal -1(%rsi), %eax
> +; 64BIT:     decl %eax
> +; 64BIT:     movzwl %ax
>    %0 = icmp eq i16 %k, %c                         ; <i1> [#uses=1]
>    %1 = add i16 %k, -1                             ; <i16> [#uses=3]
>    br i1 %0, label %bb, label %bb1
> @@ -58,7 +59,7 @@ entry:
>
>  ; 64BIT-LABEL:     t3:
>  ; 64BIT-NOT: movw %si, %ax
> -; 64BIT:     leal 2(%rsi), %eax
> +; 64BIT:     addl $2, %eax
>    %0 = add i16 %k, 2                              ; <i16> [#uses=3]
>    %1 = icmp eq i16 %k, %c                         ; <i1> [#uses=1]
>    br i1 %1, label %bb, label %bb1
> @@ -81,7 +82,7 @@ entry:
>
>  ; 64BIT-LABEL:     t4:
>  ; 64BIT-NOT: movw %si, %ax
> -; 64BIT:     leal (%rsi,%rdi), %eax
> +; 64BIT:     addl %edi, %eax
>    %0 = add i16 %k, %c                             ; <i16> [#uses=3]
>    %1 = icmp eq i16 %k, %c                         ; <i1> [#uses=1]
>    br i1 %1, label %bb, label %bb1
>
> Modified: llvm/trunk/test/CodeGen/X86/StackColoring.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/StackColoring.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/StackColoring.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/StackColoring.ll Tue Oct 15 18:33:07 2013
> @@ -4,8 +4,8 @@
>  target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
>  target triple = "x86_64-apple-macosx10.8.0"
>
> -;YESCOLOR: subq  $136, %rsp
> -;NOCOLOR: subq  $264, %rsp
> +;YESCOLOR: subq  $144, %rsp
> +;NOCOLOR: subq  $272, %rsp
>
>  define i32 @myCall_w2(i32 %in) {
>  entry:
>
> Modified: llvm/trunk/test/CodeGen/X86/abi-isel.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/abi-isel.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/abi-isel.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/abi-isel.ll Tue Oct 15 18:33:07 2013
> @@ -1,16 +1,16 @@
> -; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=i686-unknown-linux-gnu -march=x86 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=LINUX-32-STATIC
> -; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=i686-unknown-linux-gnu -march=x86 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=LINUX-32-PIC
> +; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=i686-unknown-linux-gnu -march=x86 -relocation-model=static -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=LINUX-32-STATIC
> +; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=i686-unknown-linux-gnu -march=x86 -relocation-model=static -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=LINUX-32-PIC
>
> -; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=x86_64-unknown-linux-gnu -march=x86-64 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=LINUX-64-STATIC
> -; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=x86_64-unknown-linux-gnu -march=x86-64 -relocation-model=pic -code-model=small | FileCheck %s -check-prefix=LINUX-64-PIC
> +; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=x86_64-unknown-linux-gnu -march=x86-64 -relocation-model=static -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=LINUX-64-STATIC
> +; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=x86_64-unknown-linux-gnu -march=x86-64 -relocation-model=pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=LINUX-64-PIC
>
> -; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=i686-apple-darwin -march=x86 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=DARWIN-32-STATIC
> -; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=i686-apple-darwin -march=x86 -relocation-model=dynamic-no-pic -code-model=small | FileCheck %s -check-prefix=DARWIN-32-DYNAMIC
> -; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=i686-apple-darwin -march=x86 -relocation-model=pic -code-model=small | FileCheck %s -check-prefix=DARWIN-32-PIC
> +; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=i686-apple-darwin -march=x86 -relocation-model=static -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-32-STATIC
> +; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=i686-apple-darwin -march=x86 -relocation-model=dynamic-no-pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-32-DYNAMIC
> +; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=i686-apple-darwin -march=x86 -relocation-model=pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-32-PIC
>
> -; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=DARWIN-64-STATIC
> -; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=dynamic-no-pic -code-model=small | FileCheck %s -check-prefix=DARWIN-64-DYNAMIC
> -; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=pic -code-model=small | FileCheck %s -check-prefix=DARWIN-64-PIC
> +; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=static -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-64-STATIC
> +; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=dynamic-no-pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-64-DYNAMIC
> +; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-64-PIC
>
>  @src = external global [131072 x i32]
>  @dst = external global [131072 x i32]
>
> Modified: llvm/trunk/test/CodeGen/X86/add.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/add.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/add.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/add.ll Tue Oct 15 18:33:07 2013
> @@ -9,7 +9,7 @@ define i32 @test1(i32 inreg %a) nounwind
>    %b = add i32 %a, 128
>    ret i32 %b
>  ; X32: subl    $-128, %eax
> -; X64: subl $-128,
> +; X64: subl $-128,
>  }
>  define i64 @test2(i64 inreg %a) nounwind {
>    %b = add i64 %a, 2147483648
> @@ -20,7 +20,7 @@ define i64 @test2(i64 inreg %a) nounwind
>  define i64 @test3(i64 inreg %a) nounwind {
>    %b = add i64 %a, 128
>    ret i64 %b
> -
> +
>  ; X32: addl $128, %eax
>  ; X64: subq    $-128,
>  }
> @@ -38,7 +38,7 @@ normal:
>
>  overflow:
>    ret i1 false
> -
> +
>  ; X32-LABEL: test4:
>  ; X32: addl
>  ; X32-NEXT: jo
> @@ -82,11 +82,11 @@ define i64 @test6(i64 %A, i32 %B) nounwi
>          ret i64 %tmp5
>
>  ; X32-LABEL: test6:
> -; X32:     movl 12(%esp), %edx
> +; X32:     movl 4(%esp), %eax
> +; X32-NEXT: movl 12(%esp), %edx
>  ; X32-NEXT: addl 8(%esp), %edx
> -; X32-NEXT: movl 4(%esp), %eax
>  ; X32-NEXT: ret
> -
> +
>  ; X64-LABEL: test6:
>  ; X64: shlq    $32, %r[[A1]]
>  ; X64: leaq    (%r[[A1]],%r[[A0]]), %rax
>
> Modified: llvm/trunk/test/CodeGen/X86/alloca-align-rounding.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/alloca-align-rounding.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/alloca-align-rounding.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/alloca-align-rounding.ll Tue Oct 15 18:33:07 2013
> @@ -1,4 +1,4 @@
> -; RUN: llc < %s -march=x86-64 -mtriple=i686-pc-linux | FileCheck %s
> +; RUN: llc < %s -march=x86-64 -mtriple=i686-pc-linux -enable-misched=false | FileCheck %s
>
>  declare void @bar(<2 x i64>* %n)
>
>
> Modified: llvm/trunk/test/CodeGen/X86/avx-arith.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/avx-arith.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/avx-arith.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/avx-arith.ll Tue Oct 15 18:33:07 2013
> @@ -240,15 +240,15 @@ define <16 x i16> @vpmullw(<16 x i16> %i
>  ; CHECK-NEXT: vpmuludq %xmm
>  ; CHECK-NEXT: vpsllq $32, %xmm
>  ; CHECK-NEXT: vpaddq %xmm
> -; CHECK-NEXT: vpmuludq %xmm
>  ; CHECK-NEXT: vpsrlq $32, %xmm
>  ; CHECK-NEXT: vpmuludq %xmm
>  ; CHECK-NEXT: vpsllq $32, %xmm
> +; CHECK-NEXT: vpaddq %xmm
> +; CHECK-NEXT: vpmuludq %xmm
>  ; CHECK-NEXT: vpsrlq $32, %xmm
>  ; CHECK-NEXT: vpmuludq %xmm
>  ; CHECK-NEXT: vpsllq $32, %xmm
>  ; CHECK-NEXT: vpaddq %xmm
> -; CHECK-NEXT: vpaddq %xmm
>  ; CHECK-NEXT: vpsrlq $32, %xmm
>  ; CHECK-NEXT: vpmuludq %xmm
>  ; CHECK-NEXT: vpsllq $32, %xmm
> @@ -269,4 +269,3 @@ define <4 x float> @int_sqrt_ss() {
>   %x2 = call <4 x float> @llvm.x86.sse.sqrt.ss(<4 x float> %x1) nounwind
>   ret <4 x float> %x2
>  }
> -
>
> Modified: llvm/trunk/test/CodeGen/X86/avx-intel-ocl.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/avx-intel-ocl.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/avx-intel-ocl.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/avx-intel-ocl.ll Tue Oct 15 18:33:07 2013
> @@ -32,7 +32,7 @@ declare i32 @func_int(i32, i32)
>  define <16 x float> @testf16_inp(<16 x float> %a, <16 x float> %b) nounwind {
>    %y = alloca <16 x float>, align 16
>    %x = fadd <16 x float> %a, %b
> -  %1 = call intel_ocl_bicc <16 x float> @func_float16_ptr(<16 x float> %x, <16 x float>* %y)
> +  %1 = call intel_ocl_bicc <16 x float> @func_float16_ptr(<16 x float> %x, <16 x float>* %y)
>    %2 = load <16 x float>* %y, align 16
>    %3 = fadd <16 x float> %2, %1
>    ret <16 x float> %3
> @@ -43,21 +43,21 @@ define <16 x float> @testf16_inp(<16 x f
>  ; preserved ymm6-ymm15
>  ; WIN64: testf16_regs
>  ; WIN64: call
> -; WIN64: vaddps  {{%ymm[6-7]}}, %ymm0, %ymm0
> -; WIN64: vaddps  {{%ymm[6-7]}}, %ymm1, %ymm1
> +; WIN64: vaddps  {{%ymm[6-7]}}, {{%ymm[0-1]}}, {{%ymm[0-1]}}
> +; WIN64: vaddps  {{%ymm[6-7]}}, {{%ymm[0-1]}}, {{%ymm[0-1]}}
>  ; WIN64: ret
>
>  ; preserved ymm8-ymm15
>  ; X64: testf16_regs
>  ; X64: call
> -; X64: vaddps  {{%ymm[8-9]}}, %ymm0, %ymm0
> -; X64: vaddps  {{%ymm[8-9]}}, %ymm1, %ymm1
> +; X64: vaddps  {{%ymm[8-9]}}, {{%ymm[0-1]}}, {{%ymm[0-1]}}
> +; X64: vaddps  {{%ymm[8-9]}}, {{%ymm[0-1]}}, {{%ymm[0-1]}}
>  ; X64: ret
>
>  define <16 x float> @testf16_regs(<16 x float> %a, <16 x float> %b) nounwind {
>    %y = alloca <16 x float>, align 16
>    %x = fadd <16 x float> %a, %b
> -  %1 = call intel_ocl_bicc <16 x float> @func_float16_ptr(<16 x float> %x, <16 x float>* %y)
> +  %1 = call intel_ocl_bicc <16 x float> @func_float16_ptr(<16 x float> %x, <16 x float>* %y)
>    %2 = load <16 x float>* %y, align 16
>    %3 = fadd <16 x float> %1, %b
>    %4 = fadd <16 x float> %2, %3
> @@ -166,4 +166,3 @@ entry:
>    %8 = shufflevector <8 x float> %3, <8 x float> %7, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
>    ret <8 x float> %8
>  }
> -
>
> Modified: llvm/trunk/test/CodeGen/X86/avx-shuffle.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/avx-shuffle.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/avx-shuffle.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/avx-shuffle.ll Tue Oct 15 18:33:07 2013
> @@ -81,7 +81,7 @@ entry:
>  define i32 @test9(<4 x i32> %a) nounwind {
>  ; CHECK: test9
>  ; CHECK: vpextrd
> -  %b = shufflevector <4 x i32> %a, <4 x i32> undef, <8 x i32> <i32 1, i32 1, i32 2, i32 2, i32 3, i32 3, i32 undef, i32 4>
> +  %b = shufflevector <4 x i32> %a, <4 x i32> undef, <8 x i32> <i32 1, i32 1, i32 2, i32 2, i32 3, i32 3, i32 undef, i32 4>
>    %r = extractelement <8 x i32> %b, i32 2
>  ; CHECK: ret
>    ret i32 %r
> @@ -251,6 +251,8 @@ define <8 x float> @test19(<8 x float> %
>  ; CHECK: swap8doubles
>  ; CHECK: vmovups {{[0-9]*}}(%rdi), %xmm{{[0-9]+}}
>  ; CHECK: vmovups {{[0-9]*}}(%rdi), %xmm{{[0-9]+}}
> +; CHECK: vinsertf128 $1, {{[0-9]*}}(%rdi), %ymm{{[0-9]+}}
> +; CHECK: vinsertf128 $1, {{[0-9]*}}(%rdi), %ymm{{[0-9]+}}
>  ; CHECK: vmovaps {{[0-9]*}}(%rsi), %ymm{{[0-9]+}}
>  ; CHECK: vmovaps {{[0-9]*}}(%rsi), %ymm{{[0-9]+}}
>  ; CHECK: vmovaps %xmm{{[0-9]+}}, {{[0-9]*}}(%rdi)
>
> Modified: llvm/trunk/test/CodeGen/X86/avx512-cvt.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/avx512-cvt.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/avx512-cvt.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/avx512-cvt.ll Tue Oct 15 18:33:07 2013
> @@ -167,8 +167,8 @@ define i32 @float_to_int(float %x) {
>  }
>
>  ; CHECK-LABEL: uitof64
> -; CHECK: vextracti64x4
>  ; CHECK: vcvtudq2pd
> +; CHECK: vextracti64x4
>  ; CHECK: vcvtudq2pd
>  ; CHECK: ret
>  define <16 x double> @uitof64(<16 x i32> %a) nounwind {
>
> Modified: llvm/trunk/test/CodeGen/X86/avx512-mask-op.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/avx512-mask-op.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/avx512-mask-op.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/avx512-mask-op.ll Tue Oct 15 18:33:07 2013
> @@ -27,8 +27,8 @@ define i16 @mand16(i16 %x, i16 %y) {
>    %md = xor <16 x i1> %ma, %mb
>    %me = or <16 x i1> %mc, %md
>    %ret = bitcast <16 x i1> %me to i16
> -; CHECK: kxorw
>  ; CHECK: kandw
> +; CHECK: kxorw
>  ; CHECK: korw
>    ret i16 %ret
>  }
> @@ -55,4 +55,3 @@ define i8 @shuf_test1(i16 %v) nounwind {
>     %mask1 = bitcast <8 x i1> %mask to i8
>     ret i8 %mask1
>  }
> -
>
> Modified: llvm/trunk/test/CodeGen/X86/break-anti-dependencies.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/break-anti-dependencies.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/break-anti-dependencies.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/break-anti-dependencies.ll Tue Oct 15 18:33:07 2013
> @@ -1,7 +1,7 @@
>  ; Without list-burr scheduling we may not see the difference in codegen here.
>  ; Use a subtarget that has post-RA scheduling enabled because the anti-dependency
>  ; breaker requires liveness information to be kept.
> -; RUN: llc < %s -march=x86-64 -mcpu=atom -post-RA-scheduler -pre-RA-sched=list-burr -break-anti-dependencies=none > %t
> +; RUN: llc < %s -march=x86-64 -mcpu=atom -enable-misched=false -post-RA-scheduler -pre-RA-sched=list-burr -break-anti-dependencies=none > %t
>  ; RUN:   grep "%xmm0" %t | count 14
>  ; RUN:   not grep "%xmm1" %t
>  ; RUN: llc < %s -march=x86-64 -mcpu=atom -post-RA-scheduler -break-anti-dependencies=critical > %t
>
> Modified: llvm/trunk/test/CodeGen/X86/bt.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/bt.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/bt.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/bt.ll Tue Oct 15 18:33:07 2013
> @@ -38,7 +38,7 @@ UnifiedReturnBlock:           ; preds = %entry
>  define void @test2b(i32 %x, i32 %n) nounwind {
>  entry:
>  ; CHECK: test2b
> -; CHECK: btl %eax, %ecx
> +; CHECK: btl %e{{..}}, %e{{..}}
>  ; CHECK: jb
>         %tmp29 = lshr i32 %x, %n                ; <i32> [#uses=1]
>         %tmp3 = and i32 1, %tmp29
> @@ -56,7 +56,7 @@ UnifiedReturnBlock:           ; preds = %entry
>  define void @atest2(i32 %x, i32 %n) nounwind {
>  entry:
>  ; CHECK: atest2
> -; CHECK: btl %eax, %ecx
> +; CHECK: btl %e{{..}}, %e{{..}}
>  ; CHECK: jb
>         %tmp29 = ashr i32 %x, %n                ; <i32> [#uses=1]
>         %tmp3 = and i32 %tmp29, 1               ; <i32> [#uses=1]
> @@ -74,7 +74,7 @@ UnifiedReturnBlock:           ; preds = %entry
>  define void @atest2b(i32 %x, i32 %n) nounwind {
>  entry:
>  ; CHECK: atest2b
> -; CHECK: btl %eax, %ecx
> +; CHECK: btl %e{{..}}, %e{{..}}
>         %tmp29 = ashr i32 %x, %n                ; <i32> [#uses=1]
>         %tmp3 = and i32 1, %tmp29
>         %tmp4 = icmp eq i32 %tmp3, 0            ; <i1> [#uses=1]
> @@ -91,7 +91,7 @@ UnifiedReturnBlock:           ; preds = %entry
>  define void @test3(i32 %x, i32 %n) nounwind {
>  entry:
>  ; CHECK: test3
> -; CHECK: btl %eax, %ecx
> +; CHECK: btl %e{{..}}, %e{{..}}
>  ; CHECK: jb
>         %tmp29 = shl i32 1, %n          ; <i32> [#uses=1]
>         %tmp3 = and i32 %tmp29, %x              ; <i32> [#uses=1]
> @@ -109,7 +109,7 @@ UnifiedReturnBlock:         ; preds = %entry
>  define void @test3b(i32 %x, i32 %n) nounwind {
>  entry:
>  ; CHECK: test3b
> -; CHECK: btl %eax, %ecx
> +; CHECK: btl %e{{..}}, %e{{..}}
>  ; CHECK: jb
>         %tmp29 = shl i32 1, %n          ; <i32> [#uses=1]
>         %tmp3 = and i32 %x, %tmp29
> @@ -127,7 +127,7 @@ UnifiedReturnBlock:         ; preds = %entry
>  define void @testne2(i32 %x, i32 %n) nounwind {
>  entry:
>  ; CHECK: testne2
> -; CHECK: btl %eax, %ecx
> +; CHECK: btl %e{{..}}, %e{{..}}
>  ; CHECK: jae
>         %tmp29 = lshr i32 %x, %n                ; <i32> [#uses=1]
>         %tmp3 = and i32 %tmp29, 1               ; <i32> [#uses=1]
> @@ -145,7 +145,7 @@ UnifiedReturnBlock:         ; preds = %entry
>  define void @testne2b(i32 %x, i32 %n) nounwind {
>  entry:
>  ; CHECK: testne2b
> -; CHECK: btl %eax, %ecx
> +; CHECK: btl %e{{..}}, %e{{..}}
>  ; CHECK: jae
>         %tmp29 = lshr i32 %x, %n                ; <i32> [#uses=1]
>         %tmp3 = and i32 1, %tmp29
> @@ -163,7 +163,7 @@ UnifiedReturnBlock:         ; preds = %entry
>  define void @atestne2(i32 %x, i32 %n) nounwind {
>  entry:
>  ; CHECK: atestne2
> -; CHECK: btl %eax, %ecx
> +; CHECK: btl %e{{..}}, %e{{..}}
>  ; CHECK: jae
>         %tmp29 = ashr i32 %x, %n                ; <i32> [#uses=1]
>         %tmp3 = and i32 %tmp29, 1               ; <i32> [#uses=1]
> @@ -181,7 +181,7 @@ UnifiedReturnBlock:         ; preds = %entry
>  define void @atestne2b(i32 %x, i32 %n) nounwind {
>  entry:
>  ; CHECK: atestne2b
> -; CHECK: btl %eax, %ecx
> +; CHECK: btl %e{{..}}, %e{{..}}
>  ; CHECK: jae
>         %tmp29 = ashr i32 %x, %n                ; <i32> [#uses=1]
>         %tmp3 = and i32 1, %tmp29
> @@ -199,7 +199,7 @@ UnifiedReturnBlock:         ; preds = %entry
>  define void @testne3(i32 %x, i32 %n) nounwind {
>  entry:
>  ; CHECK: testne3
> -; CHECK: btl %eax, %ecx
> +; CHECK: btl %e{{..}}, %e{{..}}
>  ; CHECK: jae
>         %tmp29 = shl i32 1, %n          ; <i32> [#uses=1]
>         %tmp3 = and i32 %tmp29, %x              ; <i32> [#uses=1]
> @@ -217,7 +217,7 @@ UnifiedReturnBlock:         ; preds = %entry
>  define void @testne3b(i32 %x, i32 %n) nounwind {
>  entry:
>  ; CHECK: testne3b
> -; CHECK: btl %eax, %ecx
> +; CHECK: btl %e{{..}}, %e{{..}}
>  ; CHECK: jae
>         %tmp29 = shl i32 1, %n          ; <i32> [#uses=1]
>         %tmp3 = and i32 %x, %tmp29
> @@ -235,7 +235,7 @@ UnifiedReturnBlock:         ; preds = %entry
>  define void @query2(i32 %x, i32 %n) nounwind {
>  entry:
>  ; CHECK: query2
> -; CHECK: btl %eax, %ecx
> +; CHECK: btl %e{{..}}, %e{{..}}
>  ; CHECK: jae
>         %tmp29 = lshr i32 %x, %n                ; <i32> [#uses=1]
>         %tmp3 = and i32 %tmp29, 1               ; <i32> [#uses=1]
> @@ -253,7 +253,7 @@ UnifiedReturnBlock:         ; preds = %entry
>  define void @query2b(i32 %x, i32 %n) nounwind {
>  entry:
>  ; CHECK: query2b
> -; CHECK: btl %eax, %ecx
> +; CHECK: btl %e{{..}}, %e{{..}}
>  ; CHECK: jae
>         %tmp29 = lshr i32 %x, %n                ; <i32> [#uses=1]
>         %tmp3 = and i32 1, %tmp29
> @@ -271,7 +271,7 @@ UnifiedReturnBlock:         ; preds = %entry
>  define void @aquery2(i32 %x, i32 %n) nounwind {
>  entry:
>  ; CHECK: aquery2
> -; CHECK: btl %eax, %ecx
> +; CHECK: btl %e{{..}}, %e{{..}}
>  ; CHECK: jae
>         %tmp29 = ashr i32 %x, %n                ; <i32> [#uses=1]
>         %tmp3 = and i32 %tmp29, 1               ; <i32> [#uses=1]
> @@ -289,7 +289,7 @@ UnifiedReturnBlock:         ; preds = %entry
>  define void @aquery2b(i32 %x, i32 %n) nounwind {
>  entry:
>  ; CHECK: aquery2b
> -; CHECK: btl %eax, %ecx
> +; CHECK: btl %e{{..}}, %e{{..}}
>  ; CHECK: jae
>         %tmp29 = ashr i32 %x, %n                ; <i32> [#uses=1]
>         %tmp3 = and i32 1, %tmp29
> @@ -307,7 +307,7 @@ UnifiedReturnBlock:         ; preds = %entry
>  define void @query3(i32 %x, i32 %n) nounwind {
>  entry:
>  ; CHECK: query3
> -; CHECK: btl %eax, %ecx
> +; CHECK: btl %e{{..}}, %e{{..}}
>  ; CHECK: jae
>         %tmp29 = shl i32 1, %n          ; <i32> [#uses=1]
>         %tmp3 = and i32 %tmp29, %x              ; <i32> [#uses=1]
> @@ -325,7 +325,7 @@ UnifiedReturnBlock:         ; preds = %entry
>  define void @query3b(i32 %x, i32 %n) nounwind {
>  entry:
>  ; CHECK: query3b
> -; CHECK: btl %eax, %ecx
> +; CHECK: btl %e{{..}}, %e{{..}}
>  ; CHECK: jae
>         %tmp29 = shl i32 1, %n          ; <i32> [#uses=1]
>         %tmp3 = and i32 %x, %tmp29
> @@ -343,7 +343,7 @@ UnifiedReturnBlock:         ; preds = %entry
>  define void @query3x(i32 %x, i32 %n) nounwind {
>  entry:
>  ; CHECK: query3x
> -; CHECK: btl %eax, %ecx
> +; CHECK: btl %e{{..}}, %e{{..}}
>  ; CHECK: jae
>         %tmp29 = shl i32 1, %n          ; <i32> [#uses=1]
>         %tmp3 = and i32 %tmp29, %x              ; <i32> [#uses=1]
> @@ -361,7 +361,7 @@ UnifiedReturnBlock:         ; preds = %entry
>  define void @query3bx(i32 %x, i32 %n) nounwind {
>  entry:
>  ; CHECK: query3bx
> -; CHECK: btl %eax, %ecx
> +; CHECK: btl %e{{..}}, %e{{..}}
>  ; CHECK: jae
>         %tmp29 = shl i32 1, %n          ; <i32> [#uses=1]
>         %tmp3 = and i32 %x, %tmp29
> @@ -379,7 +379,7 @@ UnifiedReturnBlock:         ; preds = %entry
>  define void @queryne2(i32 %x, i32 %n) nounwind {
>  entry:
>  ; CHECK: queryne2
> -; CHECK: btl %eax, %ecx
> +; CHECK: btl %e{{..}}, %e{{..}}
>  ; CHECK: jb
>         %tmp29 = lshr i32 %x, %n                ; <i32> [#uses=1]
>         %tmp3 = and i32 %tmp29, 1               ; <i32> [#uses=1]
> @@ -397,7 +397,7 @@ UnifiedReturnBlock:         ; preds = %entry
>  define void @queryne2b(i32 %x, i32 %n) nounwind {
>  entry:
>  ; CHECK: queryne2b
> -; CHECK: btl %eax, %ecx
> +; CHECK: btl %e{{..}}, %e{{..}}
>  ; CHECK: jb
>         %tmp29 = lshr i32 %x, %n                ; <i32> [#uses=1]
>         %tmp3 = and i32 1, %tmp29
> @@ -415,7 +415,7 @@ UnifiedReturnBlock:         ; preds = %entry
>  define void @aqueryne2(i32 %x, i32 %n) nounwind {
>  entry:
>  ; CHECK: aqueryne2
> -; CHECK: btl %eax, %ecx
> +; CHECK: btl %e{{..}}, %e{{..}}
>  ; CHECK: jb
>         %tmp29 = ashr i32 %x, %n                ; <i32> [#uses=1]
>         %tmp3 = and i32 %tmp29, 1               ; <i32> [#uses=1]
> @@ -433,7 +433,7 @@ UnifiedReturnBlock:         ; preds = %entry
>  define void @aqueryne2b(i32 %x, i32 %n) nounwind {
>  entry:
>  ; CHECK: aqueryne2b
> -; CHECK: btl %eax, %ecx
> +; CHECK: btl %e{{..}}, %e{{..}}
>  ; CHECK: jb
>         %tmp29 = ashr i32 %x, %n                ; <i32> [#uses=1]
>         %tmp3 = and i32 1, %tmp29
> @@ -451,7 +451,7 @@ UnifiedReturnBlock:         ; preds = %entry
>  define void @queryne3(i32 %x, i32 %n) nounwind {
>  entry:
>  ; CHECK: queryne3
> -; CHECK: btl %eax, %ecx
> +; CHECK: btl %e{{..}}, %e{{..}}
>  ; CHECK: jb
>         %tmp29 = shl i32 1, %n          ; <i32> [#uses=1]
>         %tmp3 = and i32 %tmp29, %x              ; <i32> [#uses=1]
> @@ -469,7 +469,7 @@ UnifiedReturnBlock:         ; preds = %entry
>  define void @queryne3b(i32 %x, i32 %n) nounwind {
>  entry:
>  ; CHECK: queryne3b
> -; CHECK: btl %eax, %ecx
> +; CHECK: btl %e{{..}}, %e{{..}}
>  ; CHECK: jb
>         %tmp29 = shl i32 1, %n          ; <i32> [#uses=1]
>         %tmp3 = and i32 %x, %tmp29
> @@ -487,7 +487,7 @@ UnifiedReturnBlock:         ; preds = %entry
>  define void @queryne3x(i32 %x, i32 %n) nounwind {
>  entry:
>  ; CHECK: queryne3x
> -; CHECK: btl %eax, %ecx
> +; CHECK: btl %e{{..}}, %e{{..}}
>  ; CHECK: jb
>         %tmp29 = shl i32 1, %n          ; <i32> [#uses=1]
>         %tmp3 = and i32 %tmp29, %x              ; <i32> [#uses=1]
> @@ -505,7 +505,7 @@ UnifiedReturnBlock:         ; preds = %entry
>  define void @queryne3bx(i32 %x, i32 %n) nounwind {
>  entry:
>  ; CHECK: queryne3bx
> -; CHECK: btl %eax, %ecx
> +; CHECK: btl %e{{..}}, %e{{..}}
>  ; CHECK: jb
>         %tmp29 = shl i32 1, %n          ; <i32> [#uses=1]
>         %tmp3 = and i32 %x, %tmp29
>
> Modified: llvm/trunk/test/CodeGen/X86/byval7.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/byval7.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/byval7.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/byval7.ll Tue Oct 15 18:33:07 2013
> @@ -7,14 +7,14 @@
>  define i32 @main() nounwind  {
>  entry:
>  ; CHECK-LABEL: main:
> -; CHECK: movl $1, (%esp)
>  ; CHECK: leal 16(%esp), %edi
>  ; CHECK: leal 160(%esp), %esi
>  ; CHECK: rep;movsl
> +; CHECK: movl $1, (%esp)
>         %s = alloca %struct.S           ; <%struct.S*> [#uses=2]
>         %tmp15 = getelementptr %struct.S* %s, i32 0, i32 0              ; <<2 x i64>*> [#uses=1]
>         store <2 x i64> < i64 8589934595, i64 1 >, <2 x i64>* %tmp15, align 16
> -       call void @t( i32 1, %struct.S* byval  %s ) nounwind
> +       call void @t( i32 1, %struct.S* byval  %s ) nounwind
>         ret i32 0
>  }
>
>
> Modified: llvm/trunk/test/CodeGen/X86/chain_order.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/chain_order.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/chain_order.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/chain_order.ll Tue Oct 15 18:33:07 2013
> @@ -3,8 +3,8 @@
>  ;CHECK-LABEL: cftx020:
>  ;CHECK: vmovsd  (%rdi), %xmm{{.*}}
>  ;CHECK: vmovsd  16(%rdi), %xmm{{.*}}
> -;CHECK: vmovhpd  8(%rdi), %xmm{{.*}}
>  ;CHECK: vmovsd  24(%rdi), %xmm{{.*}}
> +;CHECK: vmovhpd  8(%rdi), %xmm{{.*}}
>  ;CHECK: vmovupd %xmm{{.*}}, (%rdi)
>  ;CHECK: vmovupd %xmm{{.*}}, 16(%rdi)
>  ;CHECK: ret
> @@ -35,4 +35,3 @@ entry:
>    store <2 x double> %14, <2 x double>* %15, align 8
>    ret void
>  }
> -
>
> Modified: llvm/trunk/test/CodeGen/X86/cmov.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/cmov.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/cmov.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/cmov.ll Tue Oct 15 18:33:07 2013
> @@ -4,8 +4,8 @@ target datalayout = "e-p:64:64:64-i1:8:8
>  define i32 @test1(i32 %x, i32 %n, i32 %w, i32* %vp) nounwind readnone {
>  entry:
>  ; CHECK-LABEL: test1:
> -; CHECK: movl  $12, %eax
> -; CHECK-NEXT: btl
> +; CHECK: btl
> +; CHECK-NEXT: movl     $12, %eax
>  ; CHECK-NEXT: cmovael  (%rcx), %eax
>  ; CHECK-NEXT: ret
>
> @@ -19,8 +19,8 @@ entry:
>  define i32 @test2(i32 %x, i32 %n, i32 %w, i32* %vp) nounwind readnone {
>  entry:
>  ; CHECK-LABEL: test2:
> -; CHECK: movl  $12, %eax
> -; CHECK-NEXT: btl
> +; CHECK: btl
> +; CHECK-NEXT: movl     $12, %eax
>  ; CHECK-NEXT: cmovbl   (%rcx), %eax
>  ; CHECK-NEXT: ret
>
> @@ -92,7 +92,7 @@ bb.i.i.i:
>  ; CHECK: testb
>  ; CHECK-NOT: xor
>  ; CHECK: setne
> -; CHECK-NEXT: testb
> +; CHECK: testb
>
>  func_4.exit.i:                                    ; preds = %bb.i.i.i, %entry
>    %.not.i = xor i1 %2, true                       ; <i1> [#uses=1]
>
> Modified: llvm/trunk/test/CodeGen/X86/commute-two-addr.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/commute-two-addr.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/commute-two-addr.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/commute-two-addr.ll Tue Oct 15 18:33:07 2013
> @@ -38,10 +38,10 @@ define i32 @t2(i32 %X, i32 %Y) nounwind
>  define %0 @t3(i32 %lb, i8 zeroext %has_lb, i8 zeroext %lb_inclusive, i32 %ub, i8 zeroext %has_ub, i8 zeroext %ub_inclusive) nounwind {
>  entry:
>  ; DARWIN-LABEL: t3:
> -; DARWIN: shll $16
>  ; DARWIN: shlq $32, %rcx
> +; DARWIN-NEXT: orq %rcx, %rax
> +; DARWIN-NEXT: shll $8
>  ; DARWIN-NOT: leaq
> -; DARWIN: orq %rcx, %rax
>    %tmp21 = zext i32 %lb to i64
>    %tmp23 = zext i32 %ub to i64
>    %tmp24 = shl i64 %tmp23, 32
>
> Modified: llvm/trunk/test/CodeGen/X86/fast-isel-mem.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/fast-isel-mem.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/fast-isel-mem.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/fast-isel-mem.ll Tue Oct 15 18:33:07 2013
> @@ -40,7 +40,7 @@ entry:
>  ; CHECK:       movl    L_LotsStuff$non_lazy_ptr, %ecx
>
>  ; ATOM: _t:
> -; ATOM:         movl    L_LotsStuff$non_lazy_ptr, %ecx
> -; ATOM:         movl    $0, %eax
> +; ATOM:         movl    L_LotsStuff$non_lazy_ptr, %e{{..}}
> +; ATOM:         movl    $0, %e{{..}}
>
>  }
>
> Modified: llvm/trunk/test/CodeGen/X86/fastcc.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/fastcc.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/fastcc.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/fastcc.ll Tue Oct 15 18:33:07 2013
> @@ -1,6 +1,6 @@
>  ; RUN: llc < %s -mtriple=i686-apple-darwin -mattr=+sse2 -post-RA-scheduler=false | FileCheck %s
> -; CHECK: movsd %xmm0, 8(%esp)
> -; CHECK: xorl %ecx, %ecx
> +; CHECK: movsd %xmm{{[0-9]}}, 8(%esp)
> +; CHECK: xorl %eax, %eax
>
>  @d = external global double            ; <double*> [#uses=1]
>  @c = external global double            ; <double*> [#uses=1]
>
> Modified: llvm/trunk/test/CodeGen/X86/fold-load.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/fold-load.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/fold-load.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/fold-load.ll Tue Oct 15 18:33:07 2013
> @@ -38,10 +38,10 @@ L:
>
>    store i16 %A, i16* %Q
>    ret i32 %D
> -
> +
>  ; CHECK-LABEL: test2:
>  ; CHECK:       movl    4(%esp), %eax
> -; CHECK-NEXT:  movzwl  (%eax), %ecx
> +; CHECK-NEXT:  movzwl  (%eax), %e{{..}}
>
>  }
>
>
> Modified: llvm/trunk/test/CodeGen/X86/fold-pcmpeqd-2.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/fold-pcmpeqd-2.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/fold-pcmpeqd-2.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/fold-pcmpeqd-2.ll Tue Oct 15 18:33:07 2013
> @@ -54,22 +54,27 @@ forbody:            ; preds = %forcond
>         %mul310 = fmul <4 x float> %bitcast204.i104, zeroinitializer            ; <<4 x float>> [#uses=2]
>         %mul313 = fmul <4 x float> %bitcast204.i, zeroinitializer               ; <<4 x float>> [#uses=1]
>         %cmpunord.i11 = call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> zeroinitializer, <4 x float> zeroinitializer, i8 3) nounwind          ; <<4 x float>> [#uses=1]
> +       %tmp83 = call <4 x float> @llvm.x86.sse.min.ps(<4 x float> %mul310, <4 x float> zeroinitializer) nounwind               ; <<4 x float>> [#uses=1]
> +       %bitcast.i3 = bitcast <4 x float> %mul310 to <4 x i32>          ; <<4 x i32>> [#uses=1]
> +       %andps.i5 = and <4 x i32> %bitcast.i3, zeroinitializer          ; <<4 x i32>> [#uses=1]
> +
> +       call void null(<4 x float> %mul313, <4 x float> %cmpunord.i11, <4 x float> %tmp83, <4 x float> zeroinitializer, %struct.__ImageExecInfo* null, <4 x i32> zeroinitializer) nounwind
> +
> +       %tmp84 = call <4 x float> @llvm.x86.sse.min.ps(<4 x float> %mul313, <4 x float> zeroinitializer) nounwind               ; <<4 x float>> [#uses=1]
> +
>         %bitcast6.i13 = bitcast <4 x float> %cmpunord.i11 to <4 x i32>          ; <<4 x i32>> [#uses=2]
>         %andps.i14 = add <4 x i32> <i32 1, i32 1, i32 1, i32 1>, %bitcast6.i13          ; <<4 x i32>> [#uses=1]
>         %not.i16 = xor <4 x i32> %bitcast6.i13, < i32 -1, i32 -1, i32 -1, i32 -1 >              ; <<4 x i32>> [#uses=1]
>         %andnps.i17 = add <4 x i32> <i32 1, i32 1, i32 1, i32 1>, %not.i16              ; <<4 x i32>> [#uses=1]
>         %orps.i18 = or <4 x i32> %andnps.i17, %andps.i14                ; <<4 x i32>> [#uses=1]
>         %bitcast17.i19 = bitcast <4 x i32> %orps.i18 to <4 x float>             ; <<4 x float>> [#uses=1]
> -       %tmp83 = call <4 x float> @llvm.x86.sse.min.ps(<4 x float> %mul310, <4 x float> zeroinitializer) nounwind               ; <<4 x float>> [#uses=1]
> -       %bitcast.i3 = bitcast <4 x float> %mul310 to <4 x i32>          ; <<4 x i32>> [#uses=1]
> -       %andps.i5 = and <4 x i32> %bitcast.i3, zeroinitializer          ; <<4 x i32>> [#uses=1]
> +
>         %bitcast11.i6 = bitcast <4 x float> %tmp83 to <4 x i32>         ; <<4 x i32>> [#uses=1]
>         %not.i7 = xor <4 x i32> zeroinitializer, < i32 -1, i32 -1, i32 -1, i32 -1 >             ; <<4 x i32>> [#uses=1]
>         %andnps.i8 = and <4 x i32> %bitcast11.i6, %not.i7               ; <<4 x i32>> [#uses=1]
> -       call void null(<4 x float> %mul313, <4 x float> %cmpunord.i11, <4 x float> %tmp83, <4 x float> zeroinitializer, %struct.__ImageExecInfo* null, <4 x i32> zeroinitializer) nounwind
>         %orps.i9 = or <4 x i32> %andnps.i8, %andps.i5           ; <<4 x i32>> [#uses=1]
>         %bitcast17.i10 = bitcast <4 x i32> %orps.i9 to <4 x float>              ; <<4 x float>> [#uses=1]
> -       %tmp84 = call <4 x float> @llvm.x86.sse.min.ps(<4 x float> %mul313, <4 x float> zeroinitializer) nounwind               ; <<4 x float>> [#uses=1]
> +
>         %bitcast6.i = bitcast <4 x float> zeroinitializer to <4 x i32>          ; <<4 x i32>> [#uses=2]
>         %andps.i = and <4 x i32> zeroinitializer, %bitcast6.i           ; <<4 x i32>> [#uses=1]
>         %bitcast11.i = bitcast <4 x float> %tmp84 to <4 x i32>          ; <<4 x i32>> [#uses=1]
>
> Modified: llvm/trunk/test/CodeGen/X86/full-lsr.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/full-lsr.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/full-lsr.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/full-lsr.ll Tue Oct 15 18:33:07 2013
> @@ -4,7 +4,7 @@
>  define void @foo(float* nocapture %A, float* nocapture %B, float* nocapture %C, i32 %N) nounwind {
>  ; ATOM: foo
>  ; ATOM: addl
> -; ATOM: leal
> +; ATOM: addl
>  ; ATOM: leal
>
>  ; CHECK: foo
>
> Modified: llvm/trunk/test/CodeGen/X86/gather-addresses.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/gather-addresses.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/gather-addresses.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/gather-addresses.ll Tue Oct 15 18:33:07 2013
> @@ -1,21 +1,35 @@
> -; RUN: llc -mtriple=x86_64-linux -mcpu=nehalem < %s | FileCheck %s
> -; RUN: llc -mtriple=x86_64-win32 -mcpu=nehalem < %s | FileCheck %s
> +; RUN: llc -mtriple=x86_64-linux -mcpu=nehalem < %s | FileCheck %s --check-prefix=LIN
> +; RUN: llc -mtriple=x86_64-win32 -mcpu=nehalem < %s | FileCheck %s --check-prefix=WIN
>  ; rdar://7398554
>
>  ; When doing vector gather-scatter index calculation with 32-bit indices,
>  ; bounce the vector off of cache rather than shuffling each individual
>  ; element out of the index vector.
>
> -; CHECK: andps    ([[H:%rdx|%r8]]), %xmm0
> -; CHECK: movaps   %xmm0, {{(-24)?}}(%rsp)
> -; CHECK: movslq   {{(-24)?}}(%rsp), %rax
> -; CHECK: movsd    ([[P:%rdi|%rcx]],%rax,8), %xmm0
> -; CHECK: movslq   {{-20|4}}(%rsp), %rax
> -; CHECK: movhpd   ([[P]],%rax,8), %xmm0
> -; CHECK: movslq   {{-16|8}}(%rsp), %rax
> -; CHECK: movsd    ([[P]],%rax,8), %xmm1
> -; CHECK: movslq   {{-12|12}}(%rsp), %rax
> -; CHECK: movhpd   ([[P]],%rax,8), %xmm1
> +; CHECK: foo:
> +; LIN: movaps  (%rsi), %xmm0
> +; LIN: andps   (%rdx), %xmm0
> +; LIN: movaps  %xmm0, -24(%rsp)
> +; LIN: movslq  -24(%rsp), %[[REG1:r.+]]
> +; LIN: movslq  -20(%rsp), %[[REG2:r.+]]
> +; LIN: movslq  -16(%rsp), %[[REG3:r.+]]
> +; LIN: movslq  -12(%rsp), %[[REG4:r.+]]
> +; LIN: movsd   (%rdi,%[[REG1]],8), %xmm0
> +; LIN: movhpd  (%rdi,%[[REG2]],8), %xmm0
> +; LIN: movsd   (%rdi,%[[REG3]],8), %xmm1
> +; LIN: movhpd  (%rdi,%[[REG4]],8), %xmm1
> +
> +; WIN: movaps  (%rdx), %xmm0
> +; WIN: andps   (%r8), %xmm0
> +; WIN: movaps  %xmm0, (%rsp)
> +; WIN: movslq  (%rsp), %[[REG1:r.+]]
> +; WIN: movslq  4(%rsp), %[[REG2:r.+]]
> +; WIN: movslq  8(%rsp), %[[REG3:r.+]]
> +; WIN: movslq  12(%rsp), %[[REG4:r.+]]
> +; WIN: movsd   (%rcx,%[[REG1]],8), %xmm0
> +; WIN: movhpd  (%rcx,%[[REG2]],8), %xmm0
> +; WIN: movsd   (%rcx,%[[REG3]],8), %xmm1
> +; WIN: movhpd  (%rcx,%[[REG4]],8), %xmm1
>
>  define <4 x double> @foo(double* %p, <4 x i32>* %i, <4 x i32>* %h) nounwind {
>    %a = load <4 x i32>* %i
>
> Modified: llvm/trunk/test/CodeGen/X86/ghc-cc.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/ghc-cc.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/ghc-cc.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/ghc-cc.ll Tue Oct 15 18:33:07 2013
> @@ -28,10 +28,10 @@ entry:
>
>  define cc 10 void @foo() nounwind {
>  entry:
> -  ; CHECK: movl base, %ebx
> -  ; CHECK-NEXT: movl sp, %ebp
> +  ; CHECK:      movl r1, %esi
>    ; CHECK-NEXT: movl hp, %edi
> -  ; CHECK-NEXT: movl r1, %esi
> +  ; CHECK-NEXT: movl sp, %ebp
> +  ; CHECK-NEXT: movl base, %ebx
>    %0 = load i32* @r1
>    %1 = load i32* @hp
>    %2 = load i32* @sp
> @@ -42,4 +42,3 @@ entry:
>  }
>
>  declare cc 10 void @bar(i32, i32, i32, i32)
> -
>
> Modified: llvm/trunk/test/CodeGen/X86/ghc-cc64.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/ghc-cc64.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/ghc-cc64.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/ghc-cc64.ll Tue Oct 15 18:33:07 2013
> @@ -41,22 +41,22 @@ entry:
>
>  define cc 10 void @foo() nounwind {
>  entry:
> -  ; CHECK: movq base(%rip), %r13
> -  ; CHECK-NEXT: movq sp(%rip), %rbp
> -  ; CHECK-NEXT: movq hp(%rip), %r12
> -  ; CHECK-NEXT: movq r1(%rip), %rbx
> -  ; CHECK-NEXT: movq r2(%rip), %r14
> -  ; CHECK-NEXT: movq r3(%rip), %rsi
> -  ; CHECK-NEXT: movq r4(%rip), %rdi
> -  ; CHECK-NEXT: movq r5(%rip), %r8
> -  ; CHECK-NEXT: movq r6(%rip), %r9
> -  ; CHECK-NEXT: movq splim(%rip), %r15
> -  ; CHECK-NEXT: movss f1(%rip), %xmm1
> -  ; CHECK-NEXT: movss f2(%rip), %xmm2
> -  ; CHECK-NEXT: movss f3(%rip), %xmm3
> -  ; CHECK-NEXT: movss f4(%rip), %xmm4
> +  ; CHECK:      movsd d2(%rip), %xmm6
>    ; CHECK-NEXT: movsd d1(%rip), %xmm5
> -  ; CHECK-NEXT: movsd d2(%rip), %xmm6
> +  ; CHECK-NEXT: movss f4(%rip), %xmm4
> +  ; CHECK-NEXT: movss f3(%rip), %xmm3
> +  ; CHECK-NEXT: movss f2(%rip), %xmm2
> +  ; CHECK-NEXT: movss f1(%rip), %xmm1
> +  ; CHECK-NEXT: movq splim(%rip), %r15
> +  ; CHECK-NEXT: movq r6(%rip), %r9
> +  ; CHECK-NEXT: movq r5(%rip), %r8
> +  ; CHECK-NEXT: movq r4(%rip), %rdi
> +  ; CHECK-NEXT: movq r3(%rip), %rsi
> +  ; CHECK-NEXT: movq r2(%rip), %r14
> +  ; CHECK-NEXT: movq r1(%rip), %rbx
> +  ; CHECK-NEXT: movq hp(%rip), %r12
> +  ; CHECK-NEXT: movq sp(%rip), %rbp
> +  ; CHECK-NEXT: movq base(%rip), %r13
>    %0 = load double* @d2
>    %1 = load double* @d1
>    %2 = load float* @f4
> @@ -83,4 +83,3 @@ entry:
>
>  declare cc 10 void @bar(i64, i64, i64, i64, i64, i64, i64, i64, i64, i64,
>                          float, float, float, float, double, double)
> -
>
> Modified: llvm/trunk/test/CodeGen/X86/hipe-cc.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/hipe-cc.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/hipe-cc.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/hipe-cc.ll Tue Oct 15 18:33:07 2013
> @@ -49,10 +49,10 @@ entry:
>    store i32 %arg1, i32* %arg1_var
>    store i32 %arg2, i32* %arg2_var
>
> -  ; CHECK:      movl   4(%esp), %edx
> -  ; CHECK-NEXT: movl   8(%esp), %eax
> +  ; CHECK:      movl  16(%esp), %esi
>    ; CHECK-NEXT: movl  12(%esp), %ebp
> -  ; CHECK-NEXT: movl  16(%esp), %esi
> +  ; CHECK-NEXT: movl   8(%esp), %eax
> +  ; CHECK-NEXT: movl   4(%esp), %edx
>    %0 = load i32* %hp_var
>    %1 = load i32* %p_var
>    %2 = load i32* %arg0_var
>
> Modified: llvm/trunk/test/CodeGen/X86/hipe-cc64.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/hipe-cc64.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/hipe-cc64.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/hipe-cc64.ll Tue Oct 15 18:33:07 2013
> @@ -5,10 +5,10 @@
>  define void @zap(i64 %a, i64 %b) nounwind {
>  entry:
>    ; CHECK:      movq %rsi, %rax
> -  ; CHECK-NEXT: movq %rdi, %rsi
> -  ; CHECK-NEXT: movq %rax, %rdx
>    ; CHECK-NEXT: movl $8, %ecx
>    ; CHECK-NEXT: movl $9, %r8d
> +  ; CHECK-NEXT: movq %rdi, %rsi
> +  ; CHECK-NEXT: movq %rax, %rdx
>    ; CHECK-NEXT: callq addfour
>    %0 = call cc 11 {i64, i64, i64} @addfour(i64 undef, i64 undef, i64 %a, i64 %b, i64 8, i64 9)
>    %res = extractvalue {i64, i64, i64} %0, 2
> @@ -57,11 +57,11 @@ entry:
>    store i64 %arg2, i64* %arg2_var
>    store i64 %arg3, i64* %arg3_var
>
> -  ; CHECK:      movq  8(%rsp), %rcx
> -  ; CHECK-NEXT: movq  16(%rsp), %rdx
> -  ; CHECK-NEXT: movq  24(%rsp), %rsi
> +  ; CHECK:      movq  40(%rsp), %r15
>    ; CHECK-NEXT: movq  32(%rsp), %rbp
> -  ; CHECK-NEXT: movq  40(%rsp), %r15
> +  ; CHECK-NEXT: movq  24(%rsp), %rsi
> +  ; CHECK-NEXT: movq  16(%rsp), %rdx
> +  ; CHECK-NEXT: movq  8(%rsp), %rcx
>    %0 = load i64* %hp_var
>    %1 = load i64* %p_var
>    %2 = load i64* %arg0_var
>
> Modified: llvm/trunk/test/CodeGen/X86/lea-recursion.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/lea-recursion.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/lea-recursion.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/lea-recursion.ll Tue Oct 15 18:33:07 2013
> @@ -1,4 +1,4 @@
> -; RUN: llc < %s -march=x86-64 | grep lea | count 12
> +; RUN: llc < %s -march=x86-64 | grep lea | count 13
>
>  ; This testcase was written to demonstrate an instruction-selection problem,
>  ; however it also happens to expose a limitation in the DAGCombiner's
> @@ -44,4 +44,3 @@ entry:
>         store i32 %tmp10.6, i32* getelementptr ([1000 x i32]* @g0, i32 0, i32 7)
>         ret void
>  }
> -
>
> Modified: llvm/trunk/test/CodeGen/X86/lea.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/lea.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/lea.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/lea.ll Tue Oct 15 18:33:07 2013
> @@ -28,8 +28,7 @@ bb.nph:
>  bb2:
>         ret i32 %x_offs
>  ; CHECK-LABEL: test2:
> -; CHECK: movl %e[[A0]], %eax
> -; CHECK: addl $-5, %eax
> +; CHECK:        leal    -5(%r[[A0:..]]), %eax
>  ; CHECK:       andl    $-4, %eax
>  ; CHECK:       negl    %eax
>  ; CHECK:       leal    -4(%r[[A0]],%rax), %eax
>
> Modified: llvm/trunk/test/CodeGen/X86/load-slice.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/load-slice.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/load-slice.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/load-slice.ll Tue Oct 15 18:33:07 2013
> @@ -17,14 +17,14 @@
>  ; High slice starts at 4 (base + 4-bytes) and is 4-bytes aligned.
>  ;
>  ; STRESS-LABEL: t1:
> -; Load out[out_start + 8].imm, this is base + 8 * 8 + 4.
> -; STRESS: vmovss 68([[BASE:[^)]+]]), [[OUT_Imm:%xmm[0-9]+]]
> -; Add high slice: out[out_start].imm, this is base + 4.
> -; STRESS-NEXT: vaddss 4([[BASE]]), [[OUT_Imm]], [[RES_Imm:%xmm[0-9]+]]
>  ; Load out[out_start + 8].real, this is base + 8 * 8 + 0.
> -; STRESS-NEXT: vmovss 64([[BASE]]), [[OUT_Real:%xmm[0-9]+]]
> +; STRESS: vmovss 64([[BASE:[^(]+]]), [[OUT_Real:%xmm[0-9]+]]
>  ; Add low slice: out[out_start].real, this is base + 0.
>  ; STRESS-NEXT: vaddss ([[BASE]]), [[OUT_Real]], [[RES_Real:%xmm[0-9]+]]
> +; Load out[out_start + 8].imm, this is base + 8 * 8 + 4.
> +; STRESS-NEXT: vmovss 68([[BASE]]), [[OUT_Imm:%xmm[0-9]+]]
> +; Add high slice: out[out_start].imm, this is base + 4.
> +; STRESS-NEXT: vaddss 4([[BASE]]), [[OUT_Imm]], [[RES_Imm:%xmm[0-9]+]]
>  ; Swap Imm and Real.
>  ; STRESS-NEXT: vinsertps $16, [[RES_Imm]], [[RES_Real]], [[RES_Vec:%xmm[0-9]+]]
>  ; Put the results back into out[out_start].
> @@ -32,14 +32,14 @@
>  ;
>  ; Same for REGULAR, we eliminate register bank copy with each slices.
>  ; REGULAR-LABEL: t1:
> -; Load out[out_start + 8].imm, this is base + 8 * 8 + 4.
> -; REGULAR: vmovss 68([[BASE:[^)]+]]), [[OUT_Imm:%xmm[0-9]+]]
> -; Add high slice: out[out_start].imm, this is base + 4.
> -; REGULAR-NEXT: vaddss 4([[BASE]]), [[OUT_Imm]], [[RES_Imm:%xmm[0-9]+]]
>  ; Load out[out_start + 8].real, this is base + 8 * 8 + 0.
> -; REGULAR-NEXT: vmovss 64([[BASE]]), [[OUT_Real:%xmm[0-9]+]]
> +; REGULAR: vmovss 64([[BASE:[^)]+]]), [[OUT_Real:%xmm[0-9]+]]
>  ; Add low slice: out[out_start].real, this is base + 0.
>  ; REGULAR-NEXT: vaddss ([[BASE]]), [[OUT_Real]], [[RES_Real:%xmm[0-9]+]]
> +; Load out[out_start + 8].imm, this is base + 8 * 8 + 4.
> +; REGULAR-NEXT: vmovss 68([[BASE]]), [[OUT_Imm:%xmm[0-9]+]]
> +; Add high slice: out[out_start].imm, this is base + 4.
> +; REGULAR-NEXT: vaddss 4([[BASE]]), [[OUT_Imm]], [[RES_Imm:%xmm[0-9]+]]
>  ; Swap Imm and Real.
>  ; REGULAR-NEXT: vinsertps $16, [[RES_Imm]], [[RES_Real]], [[RES_Vec:%xmm[0-9]+]]
>  ; Put the results back into out[out_start].
> @@ -137,4 +137,3 @@ define i32 @t3(%class.Complex* nocapture
>    %res = add i32 %slice32_lowhigh, %tmpres
>    ret i32 %res
>  }
> -
>
> Modified: llvm/trunk/test/CodeGen/X86/lsr-loop-exit-cond.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/lsr-loop-exit-cond.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/lsr-loop-exit-cond.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/lsr-loop-exit-cond.ll Tue Oct 15 18:33:07 2013
> @@ -2,12 +2,12 @@
>  ; RUN: llc -mtriple=x86_64-darwin -mcpu=atom < %s | FileCheck -check-prefix=ATOM %s
>
>  ; CHECK-LABEL: t:
> -; CHECK: decq
> -; CHECK-NEXT: movl (%r9,%rax,4), %eax
> +; CHECK: movl (%r9,%rax,4), %e{{..}}
> +; CHECK-NEXT: decq
>  ; CHECK-NEXT: jne
>
>  ; ATOM-LABEL: t:
> -; ATOM: movl (%r9,%r{{.+}},4), %eax
> +; ATOM: movl (%r9,%r{{.+}},4), %e{{..}}
>  ; ATOM-NEXT: decq
>  ; ATOM-NEXT: jne
>
>
> Modified: llvm/trunk/test/CodeGen/X86/masked-iv-safe.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/masked-iv-safe.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/masked-iv-safe.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/masked-iv-safe.ll Tue Oct 15 18:33:07 2013
> @@ -1,15 +1,13 @@
> -; RUN: llc < %s -mcpu=generic -march=x86-64 > %t
> -; RUN: not grep and %t
> -; RUN: not grep movz %t
> -; RUN: not grep sar %t
> -; RUN: not grep shl %t
> -; RUN: grep add %t | count 5
> -; RUN: grep inc %t | count 2
> -; RUN: grep lea %t | count 3
> +; RUN: llc < %s -mcpu=generic -march=x86-64 | FileCheck %s
>
>  ; Optimize away zext-inreg and sext-inreg on the loop induction
>  ; variable using trip-count information.
>
> +; CHECK-LABEL: count_up
> +; CHECK-NOT: {{and|movz|sar|shl}}
> +; CHECK: inc
> +; CHECK-NOT: {{and|movz|sar|shl}}
> +; CHECK: jne
>  define void @count_up(double* %d, i64 %n) nounwind {
>  entry:
>         br label %loop
> @@ -38,6 +36,11 @@ return:
>         ret void
>  }
>
> +; CHECK-LABEL: count_down
> +; CHECK-NOT: {{and|movz|sar|shl}}
> +; CHECK: addq
> +; CHECK-NOT: {{and|movz|sar|shl}}
> +; CHECK: jne
>  define void @count_down(double* %d, i64 %n) nounwind {
>  entry:
>         br label %loop
> @@ -66,6 +69,11 @@ return:
>         ret void
>  }
>
> +; CHECK-LABEL: count_up_signed
> +; CHECK-NOT: {{and|movz|sar|shl}}
> +; CHECK: inc
> +; CHECK-NOT: {{and|movz|sar|shl}}
> +; CHECK: jne
>  define void @count_up_signed(double* %d, i64 %n) nounwind {
>  entry:
>         br label %loop
> @@ -96,6 +104,11 @@ return:
>         ret void
>  }
>
> +; CHECK-LABEL: count_down_signed
> +; CHECK-NOT: {{and|movz|sar|shl}}
> +; CHECK: addq
> +; CHECK-NOT: {{and|movz|sar|shl}}
> +; CHECK: jne
>  define void @count_down_signed(double* %d, i64 %n) nounwind {
>  entry:
>         br label %loop
> @@ -126,6 +139,11 @@ return:
>         ret void
>  }
>
> +; CHECK-LABEL: another_count_up
> +; CHECK-NOT: {{and|movz|sar|shl}}
> +; CHECK: addq
> +; CHECK-NOT: {{and|movz|sar|shl}}
> +; CHECK: jne
>  define void @another_count_up(double* %d, i64 %n) nounwind {
>  entry:
>         br label %loop
> @@ -154,6 +172,11 @@ return:
>         ret void
>  }
>
> +; CHECK-LABEL: another_count_down
> +; CHECK-NOT: {{and|movz|sar|shl}}
> +; CHECK: decq
> +; CHECK-NOT: {{and|movz|sar|shl}}
> +; CHECK: jne
>  define void @another_count_down(double* %d, i64 %n) nounwind {
>  entry:
>         br label %loop
> @@ -182,6 +205,11 @@ return:
>         ret void
>  }
>
> +; CHECK-LABEL: another_count_up_signed
> +; CHECK-NOT: {{and|movz|sar|shl}}
> +; CHECK: addq
> +; CHECK-NOT: {{and|movz|sar|shl}}
> +; CHECK: jne
>  define void @another_count_up_signed(double* %d, i64 %n) nounwind {
>  entry:
>         br label %loop
> @@ -212,6 +240,11 @@ return:
>         ret void
>  }
>
> +; CHECK-LABEL: another_count_down_signed
> +; CHECK-NOT: {{and|movz|sar|shl}}
> +; CHECK: decq
> +; CHECK-NOT: {{and|movz|sar|shl}}
> +; CHECK: jne
>  define void @another_count_down_signed(double* %d, i64 %n) nounwind {
>  entry:
>         br label %loop
>
> Modified: llvm/trunk/test/CodeGen/X86/memcpy-2.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/memcpy-2.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/memcpy-2.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/memcpy-2.ll Tue Oct 15 18:33:07 2013
> @@ -56,15 +56,15 @@ entry:
>  define void @t2(%struct.s0* nocapture %a, %struct.s0* nocapture %b) nounwind ssp {
>  entry:
>  ; SSE2-Darwin-LABEL: t2:
> -; SSE2-Darwin: movaps (%eax), %xmm0
> +; SSE2-Darwin: movaps (%ecx), %xmm0
>  ; SSE2-Darwin: movaps %xmm0, (%eax)
>
>  ; SSE2-Mingw32-LABEL: t2:
> -; SSE2-Mingw32: movaps (%eax), %xmm0
> +; SSE2-Mingw32: movaps (%ecx), %xmm0
>  ; SSE2-Mingw32: movaps %xmm0, (%eax)
>
>  ; SSE1-LABEL: t2:
> -; SSE1: movaps (%eax), %xmm0
> +; SSE1: movaps (%ecx), %xmm0
>  ; SSE1: movaps %xmm0, (%eax)
>
>  ; NOSSE-LABEL: t2:
> @@ -91,14 +91,14 @@ entry:
>  define void @t3(%struct.s0* nocapture %a, %struct.s0* nocapture %b) nounwind ssp {
>  entry:
>  ; SSE2-Darwin-LABEL: t3:
> -; SSE2-Darwin: movsd (%eax), %xmm0
> -; SSE2-Darwin: movsd 8(%eax), %xmm1
> +; SSE2-Darwin: movsd (%ecx), %xmm0
> +; SSE2-Darwin: movsd 8(%ecx), %xmm1
>  ; SSE2-Darwin: movsd %xmm1, 8(%eax)
>  ; SSE2-Darwin: movsd %xmm0, (%eax)
>
>  ; SSE2-Mingw32-LABEL: t3:
> -; SSE2-Mingw32: movsd (%eax), %xmm0
> -; SSE2-Mingw32: movsd 8(%eax), %xmm1
> +; SSE2-Mingw32: movsd (%ecx), %xmm0
> +; SSE2-Mingw32: movsd 8(%ecx), %xmm1
>  ; SSE2-Mingw32: movsd %xmm1, 8(%eax)
>  ; SSE2-Mingw32: movsd %xmm0, (%eax)
>
>
> Modified: llvm/trunk/test/CodeGen/X86/pmul.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/pmul.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/pmul.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/pmul.ll Tue Oct 15 18:33:07 2013
> @@ -1,6 +1,6 @@
>  ; RUN: llc < %s -march=x86 -mattr=sse4.1 -mcpu=nehalem -stack-alignment=16 > %t
>  ; RUN: grep pmul %t | count 12
> -; RUN: grep mov %t | count 11
> +; RUN: grep mov %t | count 14
>
>  define <4 x i32> @a(<4 x i32> %i) nounwind  {
>          %A = mul <4 x i32> %i, < i32 117, i32 117, i32 117, i32 117 >
>
> Modified: llvm/trunk/test/CodeGen/X86/pr14088.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/pr14088.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/pr14088.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/pr14088.ll Tue Oct 15 18:33:07 2013
> @@ -19,7 +19,14 @@ return:
>    ret i32 %retval.0
>  }
>
> -; We were miscompiling this and using %ax instead of %cx in the movw.
> -; CHECK: movswl        %cx, %ecx
> -; CHECK: movw  %cx, (%rsi)
> -; CHECK: movslq        %ecx, %rcx
> +; We were miscompiling this and using %ax instead of %cx in the movw
> +; in the following sequence:
> +;      movswl  %cx, %ecx
> +;      movw    %cx, (%rsi)
> +;      movslq  %ecx, %rcx
> +;
> +; We can't produce the above sequence without special SD-level
> +; heuristics. Now we produce this:
> +; CHECK: movw  %ax, (%rsi)
> +; CHECK: cwtl
> +; CHECK: cltq
>
> Modified: llvm/trunk/test/CodeGen/X86/pr1505b.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/pr1505b.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/pr1505b.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/pr1505b.ll Tue Oct 15 18:33:07 2013
> @@ -57,11 +57,10 @@ entry:
>         %tmp22 = tail call %"struct.std::basic_ostream<char,std::char_traits<char> >"* @_ZNSolsEd( %"struct.std::basic_ostream<char,std::char_traits<char> >"* %tmp16, double %tmp1920 )                ; <%"struct.std::basic_ostream<char,std::char_traits<char> >"*> [#uses=1]
>         %tmp30 = tail call %"struct.std::basic_ostream<char,std::char_traits<char> >"* @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_( %"struct.std::basic_ostream<char,std::char_traits<char> >"* %tmp22 )                ; <%"struct.std::basic_ostream<char,std::char_traits<char> >"*> [#uses=0]
>  ; reload:
> -; CHECK: fld
> -; CHECK: fstps
>  ; CHECK: ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
>         %tmp34 = tail call %"struct.std::basic_ostream<char,std::char_traits<char> >"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc( %"struct.std::basic_ostream<char,std::char_traits<char> >"* @_ZSt4cout, i8* getelementptr ([13 x i8]* @.str1, i32 0, i32 0) )          ; <%"struct.std::basic_ostream<char,std::char_traits<char> >"*> [#uses=1]
>         %tmp3940 = fpext float %tmp1314 to double               ; <double> [#uses=1]
> +; CHECK: fld
>  ; CHECK: fstpl
>  ; CHECK: ZNSolsEd
>         %tmp42 = tail call %"struct.std::basic_ostream<char,std::char_traits<char> >"* @_ZNSolsEd( %"struct.std::basic_ostream<char,std::char_traits<char> >"* %tmp34, double %tmp3940 )                ; <%"struct.std::basic_ostream<char,std::char_traits<char> >"*> [#uses=1]
>
> Modified: llvm/trunk/test/CodeGen/X86/pr16031.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/pr16031.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/pr16031.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/pr16031.ll Tue Oct 15 18:33:07 2013
> @@ -1,4 +1,4 @@
> -; RUN: llc < %s -mtriple=i386-unknown-linux-gnu -mcpu=corei7-avx | FileCheck %s
> +; RUN: llc < %s -mtriple=i386-unknown-linux-gnu -mcpu=corei7-avx -enable-misched=false | FileCheck %s
>
>  ; CHECK-LABEL: main:
>  ; CHECK: pushl %esi
>
> Modified: llvm/trunk/test/CodeGen/X86/pre-ra-sched.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/pre-ra-sched.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/pre-ra-sched.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/pre-ra-sched.ll Tue Oct 15 18:33:07 2013
> @@ -1,5 +1,6 @@
> -; RUN: llc < %s -mtriple=x86_64-apple-macosx -debug-only=pre-RA-sched \
> -; RUN:     2>&1 | FileCheck %s
> +; RUN-disabled: llc < %s -mtriple=x86_64-apple-macosx -pre-RA-sched=ilp -debug-only=pre-RA-sched \
> +; RUN-disabled:     2>&1 | FileCheck %s
> +; RUN: true
>  ; REQUIRES: asserts
>  ;
>  ; rdar:13279013: pre-RA-sched should not check all interferences and
>
> Modified: llvm/trunk/test/CodeGen/X86/rdrand.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/rdrand.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/rdrand.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/rdrand.ll Tue Oct 15 18:33:07 2013
> @@ -11,10 +11,10 @@ define i32 @_rdrand16_step(i16* %random_
>    ret i32 %isvalid
>  ; CHECK-LABEL: _rdrand16_step:
>  ; CHECK: rdrandw       %ax
> -; CHECK: movw  %ax, (%r[[A0:di|cx]])
>  ; CHECK: movzwl        %ax, %ecx
>  ; CHECK: movl  $1, %eax
>  ; CHECK: cmovael       %ecx, %eax
> +; CHECK: movw  %cx, (%r[[A0:di|cx]])
>  ; CHECK: ret
>  }
>
> @@ -26,9 +26,9 @@ define i32 @_rdrand32_step(i32* %random_
>    ret i32 %isvalid
>  ; CHECK-LABEL: _rdrand32_step:
>  ; CHECK: rdrandl       %e[[T0:[a-z]+]]
> -; CHECK: movl  %e[[T0]], (%r[[A0]])
>  ; CHECK: movl  $1, %eax
>  ; CHECK: cmovael       %e[[T0]], %eax
> +; CHECK: movl  %e[[T0]], (%r[[A0]])
>  ; CHECK: ret
>  }
>
> @@ -40,9 +40,9 @@ define i32 @_rdrand64_step(i64* %random_
>    ret i32 %isvalid
>  ; CHECK-LABEL: _rdrand64_step:
>  ; CHECK: rdrandq       %r[[T1:[a-z]+]]
> -; CHECK: movq  %r[[T1]], (%r[[A0]])
>  ; CHECK: movl  $1, %eax
>  ; CHECK: cmovael       %e[[T1]], %eax
> +; CHECK: movq  %r[[T1]], (%r[[A0]])
>  ; CHECK: ret
>  }
>
>
> Modified: llvm/trunk/test/CodeGen/X86/rdseed.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/rdseed.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/rdseed.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/rdseed.ll Tue Oct 15 18:33:07 2013
> @@ -12,10 +12,10 @@ define i32 @_rdseed16_step(i16* %random_
>    ret i32 %isvalid
>  ; CHECK-LABEL: _rdseed16_step:
>  ; CHECK: rdseedw       %ax
> -; CHECK: movw  %ax, (%r[[A0:di|cx]])
>  ; CHECK: movzwl        %ax, %ecx
>  ; CHECK: movl  $1, %eax
>  ; CHECK: cmovael       %ecx, %eax
> +; CHECK: movw  %cx, (%r[[A0:di|cx]])
>  ; CHECK: ret
>  }
>
> @@ -27,9 +27,9 @@ define i32 @_rdseed32_step(i32* %random_
>    ret i32 %isvalid
>  ; CHECK-LABEL: _rdseed32_step:
>  ; CHECK: rdseedl       %e[[T0:[a-z]+]]
> -; CHECK: movl  %e[[T0]], (%r[[A0]])
>  ; CHECK: movl  $1, %eax
>  ; CHECK: cmovael       %e[[T0]], %eax
> +; CHECK: movl  %e[[T0]], (%r[[A0]])
>  ; CHECK: ret
>  }
>
> @@ -41,8 +41,8 @@ define i32 @_rdseed64_step(i64* %random_
>    ret i32 %isvalid
>  ; CHECK-LABEL: _rdseed64_step:
>  ; CHECK: rdseedq       %r[[T1:[a-z]+]]
> -; CHECK: movq  %r[[T1]], (%r[[A0]])
>  ; CHECK: movl  $1, %eax
>  ; CHECK: cmovael       %e[[T1]], %eax
> +; CHECK: movq  %r[[T1]], (%r[[A0]])
>  ; CHECK: ret
>  }
>
> Modified: llvm/trunk/test/CodeGen/X86/segmented-stacks-dynamic.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/segmented-stacks-dynamic.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/segmented-stacks-dynamic.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/segmented-stacks-dynamic.ll Tue Oct 15 18:33:07 2013
> @@ -31,7 +31,7 @@ false:
>  ; X32-NEXT: ret
>
>  ; X32:      movl %esp, %eax
> -; X32-NEXT: subl %ecx, %eax
> +; X32:      subl %ecx, %eax
>  ; X32-NEXT: cmpl %eax, %gs:48
>
>  ; X32:      movl %eax, %esp
> @@ -52,7 +52,7 @@ false:
>  ; X64-NEXT: ret
>
>  ; X64:      movq %rsp, %[[RDI:rdi|rax]]
> -; X64-NEXT: subq %{{.*}}, %[[RDI]]
> +; X64:      subq %{{.*}}, %[[RDI]]
>  ; X64-NEXT: cmpq %[[RDI]], %fs:112
>
>  ; X64:      movq %[[RDI]], %rsp
>
> Modified: llvm/trunk/test/CodeGen/X86/select.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/select.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/select.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/select.ll Tue Oct 15 18:33:07 2013
> @@ -34,12 +34,12 @@ bb90:               ; preds = %bb84, %bb72
>  bb91:          ; preds = %bb84
>         ret i32 0
>  ; CHECK-LABEL: test2:
> -; CHECK: movnew
> -; CHECK: movswl
> +; CHECK: cmovnew
> +; CHECK: cwtl
>
>  ; ATOM-LABEL: test2:
> -; ATOM: movnew
> -; ATOM: movswl
> +; ATOM: cmovnew
> +; ATOM: cwtl
>  }
>
>  declare i1 @return_false()
> @@ -256,8 +256,8 @@ entry:
>    %call = tail call noalias i8* @_Znam(i64 %D) nounwind noredzone
>    ret i8* %call
>  ; CHECK-LABEL: test12:
> -; CHECK: movq $-1, %[[R:r..]]
>  ; CHECK: mulq
> +; CHECK: movq $-1, %[[R:r..]]
>  ; CHECK: cmovnoq       %rax, %[[R]]
>  ; CHECK: jmp   __Znam
>
>
> Modified: llvm/trunk/test/CodeGen/X86/shift-bmi2.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/shift-bmi2.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/shift-bmi2.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/shift-bmi2.ll Tue Oct 15 18:33:07 2013
> @@ -30,10 +30,11 @@ entry:
>    %x = load i32* %p
>    %shl = shl i32 %x, %shamt
>  ; BMI2: shl32p
> -; BMI2: shlxl %{{.+}}, ({{.+}}), %{{.+}}
> +; Source order scheduling prevents folding, rdar:14208996.
> +; BMI2: shlxl %{{.+}}, %{{.+}}, %{{.+}}
>  ; BMI2: ret
>  ; BMI264: shl32p
> -; BMI264: shlxl %{{.+}}, ({{.+}}), %{{.+}}
> +; BMI264: shlxl %{{.+}}, %{{.+}}, %{{.+}}
>  ; BMI264: ret
>    ret i32 %shl
>  }
> @@ -74,7 +75,7 @@ entry:
>    %x = load i64* %p
>    %shl = shl i64 %x, %shamt
>  ; BMI264: shl64p
> -; BMI264: shlxq %{{.+}}, ({{.+}}), %{{.+}}
> +; BMI264: shlxq %{{.+}}, %{{.+}}, %{{.+}}
>  ; BMI264: ret
>    ret i64 %shl
>  }
> @@ -106,10 +107,11 @@ entry:
>    %x = load i32* %p
>    %shl = lshr i32 %x, %shamt
>  ; BMI2: lshr32p
> -; BMI2: shrxl %{{.+}}, ({{.+}}), %{{.+}}
> +; Source order scheduling prevents folding, rdar:14208996.
> +; BMI2: shrxl %{{.+}}, %{{.+}}, %{{.+}}
>  ; BMI2: ret
>  ; BMI264: lshr32p
> -; BMI264: shrxl %{{.+}}, ({{.+}}), %{{.+}}
> +; BMI264: shrxl %{{.+}}, %{{.+}}, %{{.+}}
>  ; BMI264: ret
>    ret i32 %shl
>  }
> @@ -128,7 +130,7 @@ entry:
>    %x = load i64* %p
>    %shl = lshr i64 %x, %shamt
>  ; BMI264: lshr64p
> -; BMI264: shrxq %{{.+}}, ({{.+}}), %{{.+}}
> +; BMI264: shrxq %{{.+}}, %{{.+}}, %{{.+}}
>  ; BMI264: ret
>    ret i64 %shl
>  }
> @@ -150,10 +152,11 @@ entry:
>    %x = load i32* %p
>    %shl = ashr i32 %x, %shamt
>  ; BMI2: ashr32p
> -; BMI2: sarxl %{{.+}}, ({{.+}}), %{{.+}}
> +; Source order scheduling prevents folding, rdar:14208996.
> +; BMI2: sarxl %{{.+}}, %{{.+}}, %{{.+}}
>  ; BMI2: ret
>  ; BMI264: ashr32p
> -; BMI264: sarxl %{{.+}}, ({{.+}}), %{{.+}}
> +; BMI264: sarxl %{{.+}}, %{{.+}}, %{{.+}}
>  ; BMI264: ret
>    ret i32 %shl
>  }
> @@ -172,7 +175,7 @@ entry:
>    %x = load i64* %p
>    %shl = ashr i64 %x, %shamt
>  ; BMI264: ashr64p
> -; BMI264: sarxq %{{.+}}, ({{.+}}), %{{.+}}
> +; BMI264: sarxq %{{.+}}, %{{.+}}, %{{.+}}
>  ; BMI264: ret
>    ret i64 %shl
>  }
>
> Modified: llvm/trunk/test/CodeGen/X86/sink-hoist.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/sink-hoist.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/sink-hoist.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/sink-hoist.ll Tue Oct 15 18:33:07 2013
> @@ -26,11 +26,10 @@ define double @foo(double %x, double %y,
>
>  ; CHECK-LABEL: split:
>  ; CHECK-NEXT: testb $1, %dil
> -; CHECK-NEXT: jne
> -; CHECK-NEXT: movaps
> -; CHECK-NEXT: ret
> +; CHECK-NEXT: je
>  ; CHECK:      divsd
> -; CHECK-NEXT: ret
> +; CHECK:      movaps
> +; CHECK:      ret
>  define double @split(double %x, double %y, i1 %c) nounwind {
>    %a = fdiv double %x, 3.2
>    %z = select i1 %c, double %a, double %y
> @@ -65,7 +64,7 @@ return:
>  ; Sink instructions with dead EFLAGS defs.
>
>  ; FIXME: Unfail the zzz test if we can correctly mark pregs with the kill flag.
> -;
> +;
>  ; See <rdar://problem/8030636>. This test isn't valid after we made machine
>  ; sinking more conservative about sinking instructions that define a preg into a
>  ; block when we don't know if the preg is killed within the current block.
>
> Modified: llvm/trunk/test/CodeGen/X86/sse2.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/sse2.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/sse2.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/sse2.ll Tue Oct 15 18:33:07 2013
> @@ -7,7 +7,7 @@ define void @test1(<2 x double>* %r, <2
>         %tmp9 = shufflevector <2 x double> %tmp3, <2 x double> %tmp7, <2 x i32> < i32 2, i32 1 >
>         store <2 x double> %tmp9, <2 x double>* %r, align 16
>         ret void
> -
> +
>  ; CHECK-LABEL: test1:
>  ; CHECK:       movl    8(%esp), %eax
>  ; CHECK-NEXT:  movapd  (%eax), %xmm0
> @@ -23,12 +23,12 @@ define void @test2(<2 x double>* %r, <2
>         %tmp9 = shufflevector <2 x double> %tmp3, <2 x double> %tmp7, <2 x i32> < i32 0, i32 2 >
>         store <2 x double> %tmp9, <2 x double>* %r, align 16
>         ret void
> -
> +
>  ; CHECK-LABEL: test2:
> -; CHECK:       movl    8(%esp), %eax
> -; CHECK-NEXT:  movapd  (%eax), %xmm0
> +; CHECK:       movl    4(%esp), %eax
> +; CHECK:       movl    8(%esp), %ecx
> +; CHECK-NEXT:  movapd  (%ecx), %xmm0
>  ; CHECK-NEXT:  movhpd  12(%esp), %xmm0
> -; CHECK-NEXT:  movl    4(%esp), %eax
>  ; CHECK-NEXT:  movapd  %xmm0, (%eax)
>  ; CHECK-NEXT:  ret
>  }
> @@ -48,7 +48,7 @@ define void @test3(<4 x float>* %res, <4
>         store <4 x float> %tmp13, <4 x float>* %res
>         ret void
>  ; CHECK: @test3
> -; CHECK:       unpcklps
> +; CHECK:       unpcklps
>  }
>
>  define void @test4(<4 x float> %X, <4 x float>* %res) nounwind {
> @@ -85,9 +85,9 @@ define void @test6(<4 x float>* %res, <4
>          %tmp2 = shufflevector <4 x float> %tmp1, <4 x float> undef, <4 x i32> < i32 0, i32 5, i32 6, i32 7 >          ; <<4 x float>> [#uses=1]
>          store <4 x float> %tmp2, <4 x float>* %res
>          ret void
> -
> +
>  ; CHECK-LABEL: test6:
> -; CHECK:       movaps  (%eax), %xmm0
> +; CHECK:       movaps  (%ecx), %xmm0
>  ; CHECK:       movaps  %xmm0, (%eax)
>  }
>
> @@ -96,7 +96,7 @@ define void @test7() nounwind {
>          shufflevector <4 x float> %1, <4 x float> zeroinitializer, <4 x i32> zeroinitializer         ; <<4 x float>>:2 [#uses=1]
>          store <4 x float> %2, <4 x float>* null
>          ret void
> -
> +
>  ; CHECK-LABEL: test7:
>  ; CHECK:       xorps   %xmm0, %xmm0
>  ; CHECK:       movaps  %xmm0, 0
> @@ -166,7 +166,7 @@ define void @test13(<4 x float>* %res, <
>          store <4 x float> %tmp11, <4 x float>* %res
>          ret void
>  ; CHECK: test13
> -; CHECK: shufps        $69, (%eax), %xmm0
> +; CHECK: shufps        $69, (%ecx), %xmm0
>  ; CHECK: pshufd        $-40, %xmm0, %xmm0
>  }
>
> @@ -178,8 +178,8 @@ define <4 x float> @test14(<4 x float>*
>          %tmp27 = shufflevector <4 x float> %tmp9, <4 x float> %tmp21, <4 x i32> < i32 0, i32 1, i32 4, i32 5 >                ; <<4 x float>> [#uses=1]
>          ret <4 x float> %tmp27
>  ; CHECK-LABEL: test14:
> -; CHECK:       subps   [[X1:%xmm[0-9]+]], [[X2:%xmm[0-9]+]]
> -; CHECK:       addps   [[X1]], [[X0:%xmm[0-9]+]]
> +; CHECK:       addps   [[X1:%xmm[0-9]+]], [[X0:%xmm[0-9]+]]
> +; CHECK:       subps   [[X1]], [[X2:%xmm[0-9]+]]
>  ; CHECK:       movlhps [[X2]], [[X0]]
>  }
>
> @@ -221,4 +221,3 @@ entry:
>   %double2float.i = fptrunc <4 x double> %0 to <4 x float>
>   ret <4 x float> %double2float.i
>  }
> -
>
> Modified: llvm/trunk/test/CodeGen/X86/store-narrow.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/store-narrow.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/store-narrow.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/store-narrow.ll Tue Oct 15 18:33:07 2013
> @@ -12,7 +12,7 @@ entry:
>    %D = or i32 %C, %B
>    store i32 %D, i32* %a0, align 4
>    ret void
> -
> +
>  ; X64-LABEL: test1:
>  ; X64: movb    %sil, (%rdi)
>
> @@ -34,8 +34,8 @@ entry:
>  ; X64: movb    %sil, 1(%rdi)
>
>  ; X32-LABEL: test2:
> -; X32: movb    8(%esp), %al
> -; X32: movb    %al, 1(%{{.*}})
> +; X32: movb    8(%esp), %[[REG:[abcd]l]]
> +; X32: movb    %[[REG]], 1(%{{.*}})
>  }
>
>  define void @test3(i32* nocapture %a0, i16 zeroext %a1) nounwind ssp {
> @@ -67,8 +67,8 @@ entry:
>  ; X64: movw    %si, 2(%rdi)
>
>  ; X32-LABEL: test4:
> -; X32: movl    8(%esp), %eax
> -; X32: movw    %ax, 2(%{{.*}})
> +; X32: movl    8(%esp), %e[[REG:[abcd]x]]
> +; X32: movw    %[[REG]], 2(%{{.*}})
>  }
>
>  define void @test5(i64* nocapture %a0, i16 zeroext %a1) nounwind ssp {
> @@ -84,8 +84,8 @@ entry:
>  ; X64: movw    %si, 2(%rdi)
>
>  ; X32-LABEL: test5:
> -; X32: movzwl  8(%esp), %eax
> -; X32: movw    %ax, 2(%{{.*}})
> +; X32: movzwl  8(%esp), %e[[REG:[abcd]x]]
> +; X32: movw    %[[REG]], 2(%{{.*}})
>  }
>
>  define void @test6(i64* nocapture %a0, i8 zeroext %a1) nounwind ssp {
> @@ -102,8 +102,8 @@ entry:
>
>
>  ; X32-LABEL: test6:
> -; X32: movb    8(%esp), %al
> -; X32: movb    %al, 5(%{{.*}})
> +; X32: movb    8(%esp), %[[REG:[abcd]l]]
> +; X32: movb    %[[REG]], 5(%{{.*}})
>  }
>
>  define i32 @test7(i64* nocapture %a0, i8 zeroext %a1, i32* %P2) nounwind {
> @@ -121,8 +121,8 @@ entry:
>
>
>  ; X32-LABEL: test7:
> -; X32: movb    8(%esp), %cl
> -; X32: movb    %cl, 5(%{{.*}})
> +; X32: movb    8(%esp), %[[REG:[abcd]l]]
> +; X32: movb    %[[REG]], 5(%{{.*}})
>  }
>
>  ; PR7833
>
> Modified: llvm/trunk/test/CodeGen/X86/tailcall-largecode.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/tailcall-largecode.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/tailcall-largecode.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/tailcall-largecode.ll Tue Oct 15 18:33:07 2013
> @@ -1,4 +1,4 @@
> -; RUN: llc < %s -mtriple=x86_64-linux-gnu -tailcallopt -code-model=large | FileCheck %s
> +; RUN: llc < %s -mtriple=x86_64-linux-gnu -tailcallopt -code-model=large -enable-misched=false | FileCheck %s
>
>  declare fastcc i32 @callee(i32 %arg)
>  define fastcc i32 @directcall(i32 %arg) {
>
> Modified: llvm/trunk/test/CodeGen/X86/test-nofold.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/test-nofold.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/test-nofold.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/test-nofold.ll Tue Oct 15 18:33:07 2013
> @@ -2,10 +2,10 @@
>  ; rdar://5752025
>
>  ; We want:
> -;      CHECK: movl     $42, %ecx
> -; CHECK-NEXT: movl     4(%esp), %eax
> -; CHECK-NEXT: andl     $15, %eax
> -; CHECK-NEXT: cmovnel  %ecx, %eax
> +;      CHECK: movl     4(%esp), %ecx
> +; CHECK-NEXT: andl     $15, %ecx
> +; CHECK-NEXT: movl     $42, %eax
> +; CHECK-NEXT: cmovel   %ecx, %eax
>  ; CHECK-NEXT: ret
>  ;
>  ; We don't want:
> @@ -39,4 +39,3 @@ entry:
>         %retval = select i1 %tmp4, i32 %tmp2, i32 42            ; <i32> [#uses=1]
>         ret i32 %retval
>  }
> -
>
> Modified: llvm/trunk/test/CodeGen/X86/trunc-to-bool.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/trunc-to-bool.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/trunc-to-bool.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/trunc-to-bool.ll Tue Oct 15 18:33:07 2013
> @@ -22,7 +22,7 @@ ret_false:
>      ret i1 false
>  }
>  ; CHECK-LABEL: test2:
> -; CHECK: btl %eax
> +; CHECK: btl
>
>  define i32 @test3(i8* %ptr) nounwind {
>      %val = load i8* %ptr
>
> Modified: llvm/trunk/test/CodeGen/X86/v-binop-widen.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/v-binop-widen.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/v-binop-widen.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/v-binop-widen.ll Tue Oct 15 18:33:07 2013
> @@ -1,7 +1,7 @@
>  ; RUN: llc -mcpu=generic -march=x86 -mattr=+sse < %s | FileCheck %s
> -; CHECK: divss
>  ; CHECK: divps
>  ; CHECK: divps
> +; CHECK: divss
>
>  %vec = type <9 x float>
>  define %vec @vecdiv( %vec %p1, %vec %p2)
> @@ -9,4 +9,3 @@ define %vec @vecdiv( %vec %p1, %vec %p2)
>    %result = fdiv %vec %p1, %p2
>    ret %vec %result
>  }
> -
>
> Modified: llvm/trunk/test/CodeGen/X86/v-binop-widen2.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/v-binop-widen2.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/v-binop-widen2.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/v-binop-widen2.ll Tue Oct 15 18:33:07 2013
> @@ -2,9 +2,9 @@
>  ; RUN: llc -march=x86 -mcpu=atom -mattr=+sse < %s | FileCheck -check-prefix=ATOM %s
>
>  %vec = type <6 x float>
> +; CHECK: divps
>  ; CHECK: divss
>  ; CHECK: divss
> -; CHECK: divps
>
>  ; Scheduler causes a different instruction order to be produced on Intel Atom
>  ; ATOM: divps
>
> Modified: llvm/trunk/test/CodeGen/X86/vec_shuffle-27.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/vec_shuffle-27.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/vec_shuffle-27.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/vec_shuffle-27.ll Tue Oct 15 18:33:07 2013
> @@ -7,10 +7,10 @@ target triple = "i686-apple-cl.1.0"
>  define <8 x float> @my2filter4_1d(<4 x float> %a, <8 x float> %T0, <8 x float> %T1) nounwind readnone {
>  entry:
>  ; CHECK: subps
> -; CHECK: mulps
> -; CHECK: addps
>  ; CHECK: subps
>  ; CHECK: mulps
> +; CHECK: mulps
> +; CHECK: addps
>  ; CHECK: addps
>         %tmp7 = shufflevector <4 x float> %a, <4 x float> undef, <8 x i32> < i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3 >           ; <<8 x float>> [#uses=1]
>         %sub = fsub <8 x float> %T1, %T0                ; <<8 x float>> [#uses=1]
>
> Modified: llvm/trunk/test/CodeGen/X86/vec_shuffle-39.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/vec_shuffle-39.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/vec_shuffle-39.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/vec_shuffle-39.ll Tue Oct 15 18:33:07 2013
> @@ -54,8 +54,8 @@ entry:
>  define <2 x double> @t3() nounwind readonly {
>  bb:
>  ; CHECK-LABEL: t3:
> -; CHECK: punpcklqdq %xmm1, %xmm0
>  ; CHECK: movq (%rax), %xmm1
> +; CHECK: punpcklqdq %xmm2, %xmm0
>  ; CHECK: movsd %xmm1, %xmm0
>    %tmp0 = load i128* null, align 1
>    %tmp1 = load <2 x i32>* undef, align 8
> @@ -72,9 +72,9 @@ bb:
>  define <2 x i64> @t4() nounwind readonly {
>  bb:
>  ; CHECK-LABEL: t4:
> -; CHECK: punpcklqdq %xmm0, %xmm1
>  ; CHECK: movq (%rax), %xmm0
> -; CHECK: movsd %xmm1, %xmm0
> +; CHECK: punpcklqdq %{{xmm.}}, %[[XMM:xmm[0-9]]]
> +; CHECK: movsd %[[XMM]], %xmm0
>    %tmp0 = load i128* null, align 1
>    %tmp1 = load <2 x i32>* undef, align 8
>    %tmp2 = bitcast i128 %tmp0 to <16 x i8>
>
> Modified: llvm/trunk/test/CodeGen/X86/widen_cast-1.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/widen_cast-1.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/widen_cast-1.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/widen_cast-1.ll Tue Oct 15 18:33:07 2013
> @@ -1,8 +1,8 @@
>  ; RUN: llc -march=x86 -mcpu=generic -mattr=+sse4.2 < %s | FileCheck %s
>  ; RUN: llc -march=x86 -mcpu=atom < %s | FileCheck -check-prefix=ATOM %s
>
> -; CHECK: paddd
>  ; CHECK: movl
> +; CHECK: paddd
>  ; CHECK: movlpd
>
>  ; Scheduler causes produce a different instruction order
>
> Modified: llvm/trunk/test/CodeGen/X86/win64_alloca_dynalloca.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/win64_alloca_dynalloca.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/win64_alloca_dynalloca.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/win64_alloca_dynalloca.ll Tue Oct 15 18:33:07 2013
> @@ -1,6 +1,6 @@
> -; RUN: llc < %s -mcpu=generic -mtriple=x86_64-mingw32     | FileCheck %s -check-prefix=M64
> -; RUN: llc < %s -mcpu=generic -mtriple=x86_64-win32       | FileCheck %s -check-prefix=W64
> -; RUN: llc < %s -mcpu=generic -mtriple=x86_64-win32-macho | FileCheck %s -check-prefix=EFI
> +; RUN: llc < %s -mcpu=generic -enable-misched=false -mtriple=x86_64-mingw32     | FileCheck %s -check-prefix=M64
> +; RUN: llc < %s -mcpu=generic -enable-misched=false -mtriple=x86_64-win32       | FileCheck %s -check-prefix=W64
> +; RUN: llc < %s -mcpu=generic -enable-misched=false -mtriple=x86_64-win32-macho | FileCheck %s -check-prefix=EFI
>  ; PR8777
>  ; PR8778
>
> @@ -52,18 +52,18 @@ entry:
>    %r = call i64 @bar(i64 %n, i64 %x, i64 %n, i8* %buf0, i8* %buf1) nounwind
>
>  ; M64: subq  $48, %rsp
> -; M64: leaq  -4096(%rbp), %r9
>  ; M64: movq  %rax, 32(%rsp)
> +; M64: leaq  -4096(%rbp), %r9
>  ; M64: callq bar
>
>  ; W64: subq  $48, %rsp
> -; W64: leaq  -4096(%rbp), %r9
>  ; W64: movq  %rax, 32(%rsp)
> +; W64: leaq  -4096(%rbp), %r9
>  ; W64: callq bar
>
>  ; EFI: subq  $48, %rsp
> -; EFI: leaq  -[[B0OFS]](%rbp), %r9
>  ; EFI: movq  [[R64]], 32(%rsp)
> +; EFI: leaq  -[[B0OFS]](%rbp), %r9
>  ; EFI: callq _bar
>
>    ret i64 %r
>
> Modified: llvm/trunk/test/CodeGen/X86/x86-64-psub.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/x86-64-psub.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/x86-64-psub.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/x86-64-psub.ll Tue Oct 15 18:33:07 2013
> @@ -4,8 +4,8 @@
>  ; This test checks that the operands of packed sub instructions are
>  ; never interchanged by the "Two-Address instruction pass".
>
> -declare { i64, double } @getFirstParam()
> -declare { i64, double } @getSecondParam()
> +declare { i64, double } @getFirstParam()
> +declare { i64, double } @getSecondParam()
>
>  define i64 @test_psubb() {
>  entry:
> @@ -28,9 +28,10 @@ entry:
>
>  ; CHECK-LABEL: test_psubb:
>  ; CHECK:   callq getFirstParam
> +; CHECK:   movq %rax, [[TEMP:%[a-z0-9]+]]
>  ; CHECK:   callq getSecondParam
> +; CHECK:   movd [[TEMP]], [[PARAM1:%[a-z0-9]+]]
>  ; CHECK:   movd %rax, [[PARAM2:%[a-z0-9]+]]
> -; CHECK:   movq (%rsp), [[PARAM1:%[a-z0-9]+]]
>  ; CHECK:   psubb [[PARAM2]], [[PARAM1]]
>  ; CHECK: ret
>
> @@ -55,9 +56,10 @@ entry:
>
>  ; CHECK-LABEL: test_psubw:
>  ; CHECK:   callq getFirstParam
> +; CHECK:   movq %rax, [[TEMP:%[a-z0-9]+]]
>  ; CHECK:   callq getSecondParam
> +; CHECK:   movd [[TEMP]], [[PARAM1:%[a-z0-9]+]]
>  ; CHECK:   movd %rax, [[PARAM2:%[a-z0-9]+]]
> -; CHECK:   movq (%rsp), [[PARAM1:%[a-z0-9]+]]
>  ; CHECK:   psubw [[PARAM2]], [[PARAM1]]
>  ; CHECK: ret
>
> @@ -83,9 +85,10 @@ entry:
>
>  ; CHECK-LABEL: test_psubd:
>  ; CHECK:   callq getFirstParam
> +; CHECK:   movq %rax, [[TEMP:%[a-z0-9]+]]
>  ; CHECK:   callq getSecondParam
> +; CHECK:   movd [[TEMP]], [[PARAM1:%[a-z0-9]+]]
>  ; CHECK:   movd %rax, [[PARAM2:%[a-z0-9]+]]
> -; CHECK:   movq (%rsp), [[PARAM1:%[a-z0-9]+]]
>  ; CHECK:   psubd [[PARAM2]], [[PARAM1]]
>  ; CHECK: ret
>
> @@ -110,9 +113,10 @@ entry:
>
>  ; CHECK-LABEL: test_psubsb:
>  ; CHECK:   callq getFirstParam
> +; CHECK:   movq %rax, [[TEMP:%[a-z0-9]+]]
>  ; CHECK:   callq getSecondParam
> +; CHECK:   movd [[TEMP]], [[PARAM1:%[a-z0-9]+]]
>  ; CHECK:   movd %rax, [[PARAM2:%[a-z0-9]+]]
> -; CHECK:   movq (%rsp), [[PARAM1:%[a-z0-9]+]]
>  ; CHECK:   psubsb [[PARAM2]], [[PARAM1]]
>  ; CHECK: ret
>
> @@ -137,9 +141,10 @@ entry:
>
>  ; CHECK-LABEL: test_psubswv:
>  ; CHECK:   callq getFirstParam
> +; CHECK:   movq %rax, [[TEMP:%[a-z0-9]+]]
>  ; CHECK:   callq getSecondParam
> +; CHECK:   movd [[TEMP]], [[PARAM1:%[a-z0-9]+]]
>  ; CHECK:   movd %rax, [[PARAM2:%[a-z0-9]+]]
> -; CHECK:   movq (%rsp), [[PARAM1:%[a-z0-9]+]]
>  ; CHECK:   psubsw [[PARAM2]], [[PARAM1]]
>  ; CHECK: ret
>
> @@ -164,9 +169,10 @@ entry:
>
>  ; CHECK-LABEL: test_psubusbv:
>  ; CHECK:   callq getFirstParam
> +; CHECK:   movq %rax, [[TEMP:%[a-z0-9]+]]
>  ; CHECK:   callq getSecondParam
> +; CHECK:   movd [[TEMP]], [[PARAM1:%[a-z0-9]+]]
>  ; CHECK:   movd %rax, [[PARAM2:%[a-z0-9]+]]
> -; CHECK:   movq (%rsp), [[PARAM1:%[a-z0-9]+]]
>  ; CHECK:   psubusb [[PARAM2]], [[PARAM1]]
>  ; CHECK: ret
>
> @@ -191,9 +197,10 @@ entry:
>
>  ; CHECK-LABEL: test_psubuswv:
>  ; CHECK:   callq getFirstParam
> +; CHECK:   movq %rax, [[TEMP:%[a-z0-9]+]]
>  ; CHECK:   callq getSecondParam
> +; CHECK:   movd [[TEMP]], [[PARAM1:%[a-z0-9]+]]
>  ; CHECK:   movd %rax, [[PARAM2:%[a-z0-9]+]]
> -; CHECK:   movq (%rsp), [[PARAM1:%[a-z0-9]+]]
>  ; CHECK:   psubusw [[PARAM2]], [[PARAM1]]
>  ; CHECK: ret
>
>
> Modified: llvm/trunk/test/CodeGen/X86/x86-shifts.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/x86-shifts.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/x86-shifts.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/x86-shifts.ll Tue Oct 15 18:33:07 2013
> @@ -6,8 +6,8 @@
>  define <4 x i32> @shl4(<4 x i32> %A) nounwind {
>  entry:
>  ; CHECK:      shl4
> -; CHECK:      padd
>  ; CHECK:      pslld
> +; CHECK:      padd
>  ; CHECK:      ret
>    %B = shl <4 x i32> %A,  < i32 2, i32 2, i32 2, i32 2>
>    %C = shl <4 x i32> %A,  < i32 1, i32 1, i32 1, i32 1>
> @@ -67,8 +67,8 @@ entry:
>  define <8 x i16> @shl8(<8 x i16> %A) nounwind {
>  entry:
>  ; CHECK:      shl8
> -; CHECK:      padd
>  ; CHECK:      psllw
> +; CHECK:      padd
>  ; CHECK:      ret
>    %B = shl <8 x i16> %A,  < i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2>
>    %C = shl <8 x i16> %A,  < i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
>
> Modified: llvm/trunk/test/CodeGen/X86/zext-fold.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/zext-fold.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/zext-fold.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/zext-fold.ll Tue Oct 15 18:33:07 2013
> @@ -1,4 +1,4 @@
> -; RUN: llc < %s -mcpu=generic -march=x86 | FileCheck %s
> +; RUN: llc < %s -mcpu=generic -march=x86 -enable-misched=false | FileCheck %s
>
>  ;; Simple case
>  define i32 @test1(i8 %x) nounwind readnone {
> @@ -10,7 +10,7 @@ define i32 @test1(i8 %x) nounwind readno
>  ; CHECK: movzbl
>  ; CHECK-NEXT: andl {{.*}}224
>
> -;; Multiple uses of %x but easily extensible.
> +;; Multiple uses of %x but easily extensible.
>  define i32 @test2(i8 %x) nounwind readnone {
>    %A = and i8 %x, -32
>    %B = zext i8 %A to i32
> @@ -21,8 +21,8 @@ define i32 @test2(i8 %x) nounwind readno
>  }
>  ; CHECK: test2
>  ; CHECK: movzbl
> -; CHECK: orl $63
>  ; CHECK: andl $224
> +; CHECK: orl $63
>
>  declare void @use(i32, i8)
>
>
> Modified: llvm/trunk/test/CodeGen/X86/zext-sext.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/zext-sext.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/zext-sext.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/zext-sext.ll Tue Oct 15 18:33:07 2013
> @@ -34,10 +34,10 @@ entry:
>    %tmp12 = add i64 %tmp11, 5089792279245435153
>
>  ; CHECK:      addl     $2138875574, %e[[REGISTER_zext:[a-z0-9]+]]
> -; CHECK-NEXT: cmpl     $-8608074, %e[[REGISTER_zext]]
> -; CHECK:      movslq   %e[[REGISTER_zext]], [[REGISTER_tmp:%r[a-z0-9]+]]
> -; CHECK:      movq     [[REGISTER_tmp]], [[REGISTER_sext:%r[a-z0-9]+]]
> +; CHECK:      movslq   %e[[REGISTER_zext]], [[REGISTER_sext:%r[a-z0-9]+]]
> +; CHECK:      cmpl     $-8608074, %e[[REGISTER_zext]]
>  ; CHECK-NOT:  [[REGISTER_zext]]
> +; CHECK-DAG:  testl     %e[[REGISTER_zext]]
>  ; CHECK:      subq     %r[[REGISTER_zext]], [[REGISTER_sext]]
>
>    %tmp13 = sub i64 %tmp12, 2138875574
>
> Modified: llvm/trunk/test/DebugInfo/X86/dbg-value-dag-combine.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/dbg-value-dag-combine.ll?rev=192750&r1=192749&r2=192750&view=diff
> ==============================================================================
> --- llvm/trunk/test/DebugInfo/X86/dbg-value-dag-combine.ll (original)
> +++ llvm/trunk/test/DebugInfo/X86/dbg-value-dag-combine.ll Tue Oct 15 18:33:07 2013
> @@ -16,7 +16,7 @@ entry:
>    call void @llvm.dbg.value(metadata !12, i64 0, metadata !13), !dbg !14
>    %tmp2 = load i32 addrspace(1)* %ip, align 4, !dbg !15
>    %tmp3 = add i32 0, %tmp2, !dbg !15
> -; CHECK:  ##DEBUG_VALUE: idx <- EAX{{$}}
> +; CHECK:  ##DEBUG_VALUE: idx <- E{{..$}}
>    call void @llvm.dbg.value(metadata !{i32 %tmp3}, i64 0, metadata !13), !dbg
>  !15
>    %arrayidx = getelementptr i32 addrspace(1)* %ip, i32 %1, !dbg !16
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list