• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
10declare 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
14define 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
23define 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
30define 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