Home | History | Annotate | Download | only in InstCombine
      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 }
     46