When removing a function from the function set and adding it to deferred, we
[llvm.git] / test / Transforms / InstCombine / apint-select.ll
blobf2ea60101c5f9663990a6d14b90a6495072a4a40
1 ; This test makes sure that these instructions are properly eliminated.
3 ; RUN: opt < %s -instcombine -S | not grep select
6 define i41 @test1(i1 %C) {
7         %V = select i1 %C, i41 1, i41 0  ; V = C
8         ret i41 %V
11 define i999 @test2(i1 %C) {
12         %V = select i1 %C, i999 0, i999 1  ; V = C
13         ret i999 %V
16 define i41 @test3(i41 %X) {
17     ;; (x <s 0) ? -1 : 0 -> ashr x, 31
18     %t = icmp slt i41 %X, 0
19     %V = select i1 %t, i41 -1, i41 0
20     ret i41 %V
23 define i1023 @test4(i1023 %X) {
24     ;; (x <s 0) ? -1 : 0 -> ashr x, 31
25     %t = icmp slt i1023 %X, 0
26     %V = select i1 %t, i1023 -1, i1023 0
27     ret i1023 %V
30 define i41 @test5(i41 %X) {
31     ;; ((X & 27) ? 27 : 0)
32     %Y = and i41 %X, 32
33     %t = icmp ne i41 %Y, 0
34     %V = select i1 %t, i41 32, i41 0
35     ret i41 %V
38 define i1023 @test6(i1023 %X) {
39     ;; ((X & 27) ? 27 : 0)
40     %Y = and i1023 %X, 64 
41     %t = icmp ne i1023 %Y, 0
42     %V = select i1 %t, i1023 64, i1023 0
43     ret i1023 %V