blob: c2399fb88efeb2cdd8f58b26fd3f1ac506ac8c3b [file] [log] [blame]
Dan Gohmanf17a25c2007-07-18 16:29:46 +00001; This test makes sure that these instructions are properly eliminated.
2
3; RUN: llvm-as < %s | opt -instcombine | llvm-dis | not grep select
4
5
6define i41 @test1(i1 %C) {
7 %V = select i1 %C, i41 1, i41 0 ; V = C
8 ret i41 %V
9}
10
11define i999 @test2(i1 %C) {
12 %V = select i1 %C, i999 0, i999 1 ; V = C
13 ret i999 %V
14}
15
16define 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
21}
22
23define 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
28}
29
30define 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
36}
37
38define 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
44}