[x86] Fold extract_vector_elt of a load into the Load's address computation.
[oota-llvm.git] / test / CodeGen / X86 / isel-sink.ll
1 ; RUN: llc < %s -march=x86 | FileCheck %s
2 ; RUN: llc < %s -march=x86 -addr-sink-using-gep=1 | FileCheck %s
3
4 define i32 @test(i32* %X, i32 %B) {
5 ; CHECK-LABEL: test:
6 ; CHECK-NOT: ret
7 ; CHECK-NOT: lea
8 ; CHECK: mov{{.}} $4, ({{.*}},{{.*}},4)
9 ; CHECK: ret
10 ; CHECK: mov{{.}} ({{.*}},{{.*}},4),
11 ; CHECK: ret
12
13         ; This gep should be sunk out of this block into the load/store users.
14         %P = getelementptr i32* %X, i32 %B
15         %G = icmp ult i32 %B, 1234
16         br i1 %G, label %T, label %F
17 T:
18         store i32 4, i32* %P
19         ret i32 141
20 F:
21         %V = load i32* %P
22         ret i32 %V
23 }