[x86] Fold extract_vector_elt of a load into the Load's address computation.
[oota-llvm.git] / test / CodeGen / X86 / pr11415.ll
1 ; RUN: llc -mtriple=x86_64-pc-linux %s -o - -regalloc=fast -optimize-regalloc=0 | FileCheck %s
2
3 ; We used to consider the early clobber in the second asm statement as
4 ; defining %0 before it was read. This caused us to omit the
5 ; movq  -8(%rsp), %rdx
6
7 ; CHECK:        #APP
8 ; CHECK-NEXT:   #NO_APP
9 ; CHECK-NEXT:   movq    %rcx, %rax
10 ; CHECK-NEXT:   movq    %rax, -8(%rsp)
11 ; CHECK-NEXT:   movq    -8(%rsp), %rdx
12 ; CHECK-NEXT:   #APP
13 ; CHECK-NEXT:   #NO_APP
14 ; CHECK-NEXT:   movq    %rdx, %rax
15 ; CHECK-NEXT:   movq    %rdx, -8(%rsp)
16 ; CHECK-NEXT:   ret
17
18 define i64 @foo() {
19 entry:
20   %0 = tail call i64 asm "", "={cx}"() nounwind
21   %1 = tail call i64 asm "", "=&r,0,r,~{rax}"(i64 %0, i64 %0) nounwind
22   ret i64 %1
23 }