Home | History | Annotate | Download | only in Blackfin
      1 ; RUN: llc < %s -march=bfin > %t
      2 
      3 ; The DAG combiner may sometimes create illegal i16 SETCC operations when run
      4 ; after LegalizeOps. Try to tease out all the optimizations in
      5 ; TargetLowering::SimplifySetCC.
      6 
      7 @x = external global i16
      8 @y = external global i16
      9 
     10 declare i16 @llvm.ctlz.i16(i16)
     11 
     12 ; Case (srl (ctlz x), 5) == const
     13 ; Note: ctlz is promoted, so this test does not catch the DAG combiner
     14 define i1 @srl_ctlz_const() {
     15   %x = load i16* @x
     16   %c = call i16 @llvm.ctlz.i16(i16 %x)
     17   %s = lshr i16 %c, 4
     18   %r = icmp eq i16 %s, 1
     19   ret i1 %r
     20 }
     21 
     22 ; Case (zext x) == const
     23 define i1 @zext_const() {
     24   %x = load i16* @x
     25   %r = icmp ugt i16 %x, 1
     26   ret i1 %r
     27 }
     28 
     29 ; Case (sext x) == const
     30 define i1 @sext_const() {
     31   %x = load i16* @x
     32   %y = add i16 %x, 1
     33   %x2 = sext i16 %y to i32
     34   %r = icmp ne i32 %x2, -1
     35   ret i1 %r
     36 }
     37 
     38