|
| 1 | +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py |
1 | 2 | ; RUN: opt < %s -instcombine -S | FileCheck %s
|
2 | 3 |
|
3 |
| -; CHECK: select |
4 |
| -; CHECK: select |
5 |
| - |
6 | 4 | ; Make sure instcombine don't fold select into operands. We don't want to emit
|
7 | 5 | ; select of two integers unless it's selecting 0 / 1.
|
8 | 6 |
|
9 |
| -define 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 |
| 7 | +define i32 @t1(i32 %c, i32 %x) { |
| 8 | +; CHECK-LABEL: @t1( |
| 9 | +; CHECK-NEXT: [[T1:%.*]] = icmp eq i32 [[C:%.*]], 0 |
| 10 | +; CHECK-NEXT: [[T2:%.*]] = lshr i32 [[X:%.*]], 18 |
| 11 | +; CHECK-NEXT: [[T3:%.*]] = select i1 [[T1]], i32 [[T2]], i32 [[X]] |
| 12 | +; CHECK-NEXT: ret i32 [[T3]] |
| 13 | +; |
| 14 | + %t1 = icmp eq i32 %c, 0 |
| 15 | + %t2 = lshr i32 %x, 18 |
| 16 | + %t3 = select i1 %t1, i32 %t2, i32 %x |
| 17 | + ret i32 %t3 |
14 | 18 | }
|
15 | 19 |
|
16 |
| -define 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 |
| 20 | +define i32 @t2(i32 %c, i32 %x) { |
| 21 | +; CHECK-LABEL: @t2( |
| 22 | +; CHECK-NEXT: [[T1:%.*]] = icmp eq i32 [[C:%.*]], 0 |
| 23 | +; CHECK-NEXT: [[T2:%.*]] = and i32 [[X:%.*]], 18 |
| 24 | +; CHECK-NEXT: [[T3:%.*]] = select i1 [[T1]], i32 [[T2]], i32 [[X]] |
| 25 | +; CHECK-NEXT: ret i32 [[T3]] |
| 26 | +; |
| 27 | + %t1 = icmp eq i32 %c, 0 |
| 28 | + %t2 = and i32 %x, 18 |
| 29 | + %t3 = select i1 %t1, i32 %t2, i32 %x |
| 30 | + ret i32 %t3 |
21 | 31 | }
|
22 | 32 |
|
23 |
| -define float @t3(float %x, float %y) nounwind { |
| 33 | +define float @t3(float %x, float %y) { |
| 34 | +; CHECK-LABEL: @t3( |
| 35 | +; CHECK-NEXT: [[T1:%.*]] = fcmp ogt float [[X:%.*]], [[Y:%.*]] |
| 36 | +; CHECK-NEXT: [[X_OP:%.*]] = fadd fast float [[X]], 1.000000e+00 |
| 37 | +; CHECK-NEXT: [[T3:%.*]] = select i1 [[T1]], float [[X_OP]], float 2.000000e+00 |
| 38 | +; CHECK-NEXT: ret float [[T3]] |
| 39 | +; |
24 | 40 | %t1 = fcmp ogt float %x, %y
|
25 | 41 | %t2 = select i1 %t1, float %x, float 1.0
|
26 | 42 | %t3 = fadd fast float %t2, 1.0
|
27 | 43 | ret float %t3
|
28 |
| -; CHECK-LABEL: @t3( |
29 |
| -; CHECK: fadd fast |
30 |
| -; CHECK: select |
31 | 44 | }
|
0 commit comments