• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; This test makes sure that these instructions are properly eliminated.
2
3; RUN: opt < %s -instcombine -S | 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}
45