blob: 10fbc0e8405cd83a1d064a5beec00713333fe389 [file] [log] [blame]
/* { dg-do compile } */
#define N 128
short x[N];
short y[N];
void
f1 (void)
{
for (int i = 0; i < N; ++i)
x[i] >>= (y[i] & 15);
}
void
f2 (void)
{
for (int i = 0; i < N; ++i)
x[i] >>= ((y[i] & 7) + 8);
}
void
f3 (void)
{
for (int i = 0; i < N; ++i)
x[i] >>= ((y[i] & 7) ^ 11);
}
void
f4 (void)
{
for (int i = 0; i < N; ++i)
x[i] >>= (y[i] < 15 ? y[i] : 15);
}
void
f5 (void)
{
for (int i = 0; i < N; ++i)
x[i] >>= (y[i] < 15 ? y[i] : 1);
}
void
f6 (void)
{
for (int i = 0; i < N; ++i)
x[i] = 32768 >> (y[i] & 15);
}
/* { dg-final { scan-tree-dump {:11:[^\n]+can narrow to signed:16 without loss [^\n]+>>} "vect" } } */
/* { dg-final { scan-tree-dump {:18:[^\n]+can narrow to signed:16 without loss [^\n]+>>} "vect" } } */
/* { dg-final { scan-tree-dump {:25:[^\n]+can narrow to signed:16 without loss [^\n]+>>} "vect" } } */
/* { dg-final { scan-tree-dump {:32:[^\n]+can narrow to signed:16 without loss [^\n]+>>} "vect" } } */
/* { dg-final { scan-tree-dump {:39:[^\n]+can narrow to signed:16 without loss [^\n]+>>} "vect" } } */
/* { dg-final { scan-tree-dump {can narrow to unsigned:16 without loss [^\n]+>>} "vect" } } */