Implement support for using modeling implicit-zero-extension on x86-64
[oota-llvm.git] / test / CodeGen / X86 / subreg-to-reg-5.ll
1 ; RUN: llvm-as < %s | llc -march=x86-64 > %t
2 ; RUN: grep addl %t
3 ; RUN: not egrep {movl|movq} %t
4
5 define float @foo(float* %B) nounwind {
6 entry:
7         br label %bb2
8
9 bb2:            ; preds = %bb3, %entry
10         %B_addr.0.rec = phi i64 [ %indvar.next154, %bb3 ], [ 0, %entry ]                ; <i64> [#uses=2]
11         br i1 false, label %bb3, label %bb4
12
13 bb3:            ; preds = %bb2
14         %indvar.next154 = add i64 %B_addr.0.rec, 1              ; <i64> [#uses=1]
15         br label %bb2
16
17 bb4:            ; preds = %bb2
18         %B_addr.0 = getelementptr float* %B, i64 %B_addr.0.rec          ; <float*> [#uses=1]
19         %t1 = ptrtoint float* %B_addr.0 to i64          ; <i64> [#uses=1]
20         %t2 = and i64 %t1, 15           ; <i64> [#uses=1]
21         %t3 = icmp eq i64 %t2, 0                ; <i1> [#uses=1]
22         br i1 %t3, label %bb5, label %bb10.preheader
23
24 bb10.preheader:         ; preds = %bb4
25         br label %bb9
26
27 bb5:            ; preds = %bb4
28         unreachable
29
30 bb9:            ; preds = %bb10.preheader
31         %t5 = getelementptr float* %B, i64 0            ; <float*> [#uses=1]
32         %t7 = load float* %t5           ; <float> [#uses=1]
33         ret float %t7
34 }