]>
git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/testsuite/gcc.dg/tree-ssa/pr92834.c
1 /* PR tree-optimization/92834 */
2 /* { dg-do compile } */
3 /* { dg-options "-O2 -fdump-tree-optimized" } */
4 /* { dg-final { scan-tree-dump-times "MIN_EXPR <" 8 "optimized" } } */
5 /* { dg-final { scan-tree-dump-times "MAX_EXPR <" 8 "optimized" } } */
8 umax1 (unsigned a
, unsigned b
)
10 return a
- ((a
- b
) & -(a
< b
));
13 static inline unsigned
14 umin1 (unsigned a
, unsigned b
)
16 return a
- ((a
- b
) & -(a
> b
));
22 return a
- ((a
- b
) & -(a
< b
));
28 return a
- ((a
- b
) & -(a
> b
));
31 static inline unsigned long long
32 umax2 (unsigned long long a
, unsigned long long b
)
34 return a
- ((a
- b
) & -(a
<= b
));
37 static inline unsigned long long
38 umin2 (unsigned long long a
, unsigned long long b
)
40 return a
- ((a
- b
) & -(a
>= b
));
43 static inline long long
44 smax2 (long long a
, long long b
)
46 return a
- ((a
- b
) & -(a
<= b
));
49 static inline long long
50 smin2 (long long a
, long long b
)
52 return a
- ((a
- b
) & -(a
>= b
));
55 static inline unsigned
56 umax3 (unsigned a
, unsigned b
)
58 return a
+ ((b
- a
) & -(a
< b
));
61 static inline unsigned
62 umin3 (unsigned a
, unsigned b
)
64 return a
+ ((b
- a
) & -(a
> b
));
70 return a
+ ((b
- a
) & -(a
< b
));
76 return a
+ ((b
- a
) & -(a
> b
));
79 static inline unsigned long long
80 umax4 (unsigned long long a
, unsigned long long b
)
82 return a
+ ((b
- a
) & -(a
<= b
));
85 static inline unsigned long long
86 umin4 (unsigned long long a
, unsigned long long b
)
88 return a
+ ((b
- a
) & -(a
>= b
));
91 static inline long long
92 smax4 (long long a
, long long b
)
94 return a
+ ((b
- a
) & -(a
<= b
));
97 static inline long long
98 smin4 (long long a
, long long b
)
100 return a
+ ((b
- a
) & -(a
>= b
));
104 test (unsigned *x
, int *y
, unsigned long long *z
, long long *w
)
106 x
[2] = umax1 (x
[0], x
[1]);
107 x
[5] = umin1 (x
[2], x
[3]);
108 y
[2] = smax1 (y
[0], y
[1]);
109 y
[5] = smin1 (y
[2], y
[3]);
110 z
[2] = umax2 (z
[0], z
[1]);
111 z
[5] = umin2 (z
[2], z
[3]);
112 w
[2] = smax2 (w
[0], w
[1]);
113 w
[5] = smin2 (w
[2], w
[3]);
114 x
[8] = umax3 (x
[6], x
[7]);
115 x
[11] = umin3 (x
[9], x
[10]);
116 y
[8] = smax3 (y
[6], y
[7]);
117 y
[11] = smin3 (y
[9], y
[10]);
118 z
[8] = umax4 (z
[6], z
[7]);
119 z
[11] = umin4 (z
[9], z
[10]);
120 w
[8] = smax4 (w
[6], w
[7]);
121 w
[11] = smin4 (w
[9], w
[10]);