blob: 832d958c5f34035b59dd2b0df5b573d26bea6190 [file] [log] [blame]
Matt Arsenault80ecd772013-08-28 23:04:41 +00001; RUN: opt < %s -instcombine -S | FileCheck %s
2
3; CHECK: select
4; CHECK: select
Evan Cheng826b6f02009-03-31 20:42:45 +00005
6; Make sure instcombine don't fold select into operands. We don't want to emit
7; select of two integers unless it's selecting 0 / 1.
8
9define i32 @t1(i32 %c, i32 %x) nounwind {
10 %t1 = icmp eq i32 %c, 0
11 %t2 = lshr i32 %x, 18
12 %t3 = select i1 %t1, i32 %t2, i32 %x
13 ret i32 %t3
14}
15
16define i32 @t2(i32 %c, i32 %x) nounwind {
17 %t1 = icmp eq i32 %c, 0
18 %t2 = and i32 %x, 18
19 %t3 = select i1 %t1, i32 %t2, i32 %x
20 ret i32 %t3
21}
Owen Anderson1664dc82014-01-20 07:44:53 +000022
23define float @t3(float %x, float %y) nounwind {
24 %t1 = fcmp ogt float %x, %y
25 %t2 = select i1 %t1, float %x, float 1.0
26 %t3 = fadd fast float %t2, 1.0
27 ret float %t3
28; CHECK-LABEL: @t3(
29; CHECK: fadd fast
30; CHECK: select
31}