[InstCombine] call SimplifyICmpInst with correct context
[oota-llvm.git] / test / Transforms / InstCombine / apint-select.ll
1 ; This test makes sure that these instructions are properly eliminated.
2
3 ; RUN: opt < %s -instcombine -S | FileCheck %s
4 ; CHECK-NOT: select
5
6
7 define i41 @test1(i1 %C) {
8         %V = select i1 %C, i41 1, i41 0  ; V = C
9         ret i41 %V
10 }
11
12 define i999 @test2(i1 %C) {
13         %V = select i1 %C, i999 0, i999 1  ; V = C
14         ret i999 %V
15 }
16
17 define i41 @test3(i41 %X) {
18     ;; (x <s 0) ? -1 : 0 -> ashr x, 31
19     %t = icmp slt i41 %X, 0
20     %V = select i1 %t, i41 -1, i41 0
21     ret i41 %V
22 }
23
24 define i1023 @test4(i1023 %X) {
25     ;; (x <s 0) ? -1 : 0 -> ashr x, 31
26     %t = icmp slt i1023 %X, 0
27     %V = select i1 %t, i1023 -1, i1023 0
28     ret i1023 %V
29 }
30
31 define i41 @test5(i41 %X) {
32     ;; ((X & 27) ? 27 : 0)
33     %Y = and i41 %X, 32
34     %t = icmp ne i41 %Y, 0
35     %V = select i1 %t, i41 32, i41 0
36     ret i41 %V
37 }
38
39 define i1023 @test6(i1023 %X) {
40     ;; ((X & 27) ? 27 : 0)
41     %Y = and i1023 %X, 64
42     %t = icmp ne i1023 %Y, 0
43     %V = select i1 %t, i1023 64, i1023 0
44     ret i1023 %V
45 }