Slightly generalize the code that handles shuffles of consecutive loads
[oota-llvm.git] / test / CodeGen / X86 / const-select.ll
1
2 target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
3 target triple = "i386-apple-darwin7"
4
5 ; RUN: llvm-as < %s | llc | grep {LCPI1_0(,%eax,4)}
6 define float @f(i32 %x) nounwind readnone {
7 entry:
8         %0 = icmp eq i32 %x, 0          ; <i1> [#uses=1]
9         %iftmp.0.0 = select i1 %0, float 4.200000e+01, float 2.300000e+01               ; <float> [#uses=1]
10         ret float %iftmp.0.0
11 }
12
13 ; RUN: llvm-as < %s | llc | grep {movsbl.*(%e.x,%e.x,4), %eax}
14 define signext i8 @test(i8* nocapture %P, double %F) nounwind readonly {
15 entry:
16         %0 = fcmp olt double %F, 4.200000e+01           ; <i1> [#uses=1]
17         %iftmp.0.0 = select i1 %0, i32 4, i32 0         ; <i32> [#uses=1]
18         %1 = getelementptr i8* %P, i32 %iftmp.0.0               ; <i8*> [#uses=1]
19         %2 = load i8* %1, align 1               ; <i8> [#uses=1]
20         ret i8 %2
21 }
22