• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
7define i41 @test1(i1 %C) {
8	%V = select i1 %C, i41 1, i41 0  ; V = C
9	ret i41 %V
10}
11
12define i999 @test2(i1 %C) {
13	%V = select i1 %C, i999 0, i999 1  ; V = C
14	ret i999 %V
15}
16
17define 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
24define 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
31define 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
39define 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}
46