blob: 889048d3840dfb611c30a1de9476060ceba9b905 [file] [log] [blame]
/* PR tree-optimization/92834 */
/* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-optimized" } */
/* { dg-final { scan-tree-dump-times "MIN_EXPR <" 8 "optimized" } } */
/* { dg-final { scan-tree-dump-times "MAX_EXPR <" 8 "optimized" } } */
static inline unsigned
umax1 (unsigned a, unsigned b)
{
return a - ((a - b) & -(a < b));
}
static inline unsigned
umin1 (unsigned a, unsigned b)
{
return a - ((a - b) & -(a > b));
}
static inline int
smax1 (int a, int b)
{
return a - ((a - b) & -(a < b));
}
static inline int
smin1 (int a, int b)
{
return a - ((a - b) & -(a > b));
}
static inline unsigned long long
umax2 (unsigned long long a, unsigned long long b)
{
return a - ((a - b) & -(a <= b));
}
static inline unsigned long long
umin2 (unsigned long long a, unsigned long long b)
{
return a - ((a - b) & -(a >= b));
}
static inline long long
smax2 (long long a, long long b)
{
return a - ((a - b) & -(a <= b));
}
static inline long long
smin2 (long long a, long long b)
{
return a - ((a - b) & -(a >= b));
}
static inline unsigned
umax3 (unsigned a, unsigned b)
{
return a + ((b - a) & -(a < b));
}
static inline unsigned
umin3 (unsigned a, unsigned b)
{
return a + ((b - a) & -(a > b));
}
static inline int
smax3 (int a, int b)
{
return a + ((b - a) & -(a < b));
}
static inline int
smin3 (int a, int b)
{
return a + ((b - a) & -(a > b));
}
static inline unsigned long long
umax4 (unsigned long long a, unsigned long long b)
{
return a + ((b - a) & -(a <= b));
}
static inline unsigned long long
umin4 (unsigned long long a, unsigned long long b)
{
return a + ((b - a) & -(a >= b));
}
static inline long long
smax4 (long long a, long long b)
{
return a + ((b - a) & -(a <= b));
}
static inline long long
smin4 (long long a, long long b)
{
return a + ((b - a) & -(a >= b));
}
void
test (unsigned *x, int *y, unsigned long long *z, long long *w)
{
x[2] = umax1 (x[0], x[1]);
x[5] = umin1 (x[2], x[3]);
y[2] = smax1 (y[0], y[1]);
y[5] = smin1 (y[2], y[3]);
z[2] = umax2 (z[0], z[1]);
z[5] = umin2 (z[2], z[3]);
w[2] = smax2 (w[0], w[1]);
w[5] = smin2 (w[2], w[3]);
x[8] = umax3 (x[6], x[7]);
x[11] = umin3 (x[9], x[10]);
y[8] = smax3 (y[6], y[7]);
y[11] = smin3 (y[9], y[10]);
z[8] = umax4 (z[6], z[7]);
z[11] = umin4 (z[9], z[10]);
w[8] = smax4 (w[6], w[7]);
w[11] = smin4 (w[9], w[10]);
}