fix PR4963: folding insertvalue would sometimes turn a packed struct into
[llvm/avr.git] / test / Transforms / InstCombine / adjust-for-sminmax.ll
blobb9b6f702eb6276c33a1234627149c23f99f7128b
1 ; RUN: opt < %s -instcombine -S | grep {icmp s\[lg\]t i32 %n, 0} | count 16
3 ; Instcombine should recognize that this code can be adjusted
4 ; to fit the canonical smax/smin pattern.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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