; RUN: llc < %s -march=bfin > %t ; The DAG combiner may sometimes create illegal i16 SETCC operations when run ; after LegalizeOps. Try to tease out all the optimizations in ; TargetLowering::SimplifySetCC. @x = external global i16 @y = external global i16 declare i16 @llvm.ctlz.i16(i16) ; Case (srl (ctlz x), 5) == const ; Note: ctlz is promoted, so this test does not catch the DAG combiner define i1 @srl_ctlz_const() { %x = load i16* @x %c = call i16 @llvm.ctlz.i16(i16 %x) %s = lshr i16 %c, 4 %r = icmp eq i16 %s, 1 ret i1 %r } ; Case (zext x) == const define i1 @zext_const() { %x = load i16* @x %r = icmp ugt i16 %x, 1 ret i1 %r } ; Case (sext x) == const define i1 @sext_const() { %x = load i16* @x %y = add i16 %x, 1 %x2 = sext i16 %y to i32 %r = icmp ne i32 %x2, -1 ret i1 %r }