DI: Reverse direction of subprogram -> function edge.
[oota-llvm.git] / test / Transforms / InstCombine / adjust-for-sminmax.ll
1 ; RUN: opt < %s -instcombine -S | grep "icmp s[lg]t i32 %n, 0" | count 16
2
3 ; Instcombine should recognize that this code can be adjusted
4 ; to fit the canonical smax/smin pattern.
5
6 define i32 @floor_a(i32 %n) {
7   %t = icmp sgt i32 %n, -1
8   %m = select i1 %t, i32 %n, i32 0
9   ret i32 %m
10 }
11 define i32 @ceil_a(i32 %n) {
12   %t = icmp slt i32 %n, 1
13   %m = select i1 %t, i32 %n, i32 0
14   ret i32 %m
15 }
16 define i32 @floor_b(i32 %n) {
17   %t = icmp sgt i32 %n, 0
18   %m = select i1 %t, i32 %n, i32 0
19   ret i32 %m
20 }
21 define i32 @ceil_b(i32 %n) {
22   %t = icmp slt i32 %n, 0
23   %m = select i1 %t, i32 %n, i32 0
24   ret i32 %m
25 }
26 define i32 @floor_c(i32 %n) {
27   %t = icmp sge i32 %n, 0
28   %m = select i1 %t, i32 %n, i32 0
29   ret i32 %m
30 }
31 define i32 @ceil_c(i32 %n) {
32   %t = icmp sle i32 %n, 0
33   %m = select i1 %t, i32 %n, i32 0
34   ret i32 %m
35 }
36 define i32 @floor_d(i32 %n) {
37   %t = icmp sge i32 %n, 1
38   %m = select i1 %t, i32 %n, i32 0
39   ret i32 %m
40 }
41 define i32 @ceil_d(i32 %n) {
42   %t = icmp sle i32 %n, -1
43   %m = select i1 %t, i32 %n, i32 0
44   ret i32 %m
45 }
46 define i32 @floor_e(i32 %n) {
47   %t = icmp sgt i32 %n, -1
48   %m = select i1 %t, i32 %n, i32 0
49   ret i32 %m
50 }
51 define i32 @ceil_e(i32 %n) {
52   %t = icmp slt i32 %n, 1
53   %m = select i1 %t, i32 %n, i32 0
54   ret i32 %m
55 }
56 define i32 @floor_f(i32 %n) {
57   %t = icmp sgt i32 %n, 0
58   %m = select i1 %t, i32 %n, i32 0
59   ret i32 %m
60 }
61 define i32 @ceil_f(i32 %n) {
62   %t = icmp slt i32 %n, 0
63   %m = select i1 %t, i32 %n, i32 0
64   ret i32 %m
65 }
66 define i32 @floor_g(i32 %n) {
67   %t = icmp sge i32 %n, 0
68   %m = select i1 %t, i32 %n, i32 0
69   ret i32 %m
70 }
71 define i32 @ceil_g(i32 %n) {
72   %t = icmp sle i32 %n, 0
73   %m = select i1 %t, i32 %n, i32 0
74   ret i32 %m
75 }
76 define i32 @floor_h(i32 %n) {
77   %t = icmp sge i32 %n, 1
78   %m = select i1 %t, i32 %n, i32 0
79   ret i32 %m
80 }
81 define i32 @ceil_h(i32 %n) {
82   %t = icmp sle i32 %n, -1
83   %m = select i1 %t, i32 %n, i32 0
84   ret i32 %m
85 }