blob: 632c96e7481339a6dfac92913a519ad5501d34c4 [file] [log] [blame]
/* PR tree-optimization/51581 */
#include "tree-vect.h"
short int a[16], b[16];
unsigned short int c[16], d[16];
void
f1 (void)
{
a[0] = b[0] / 8;
a[1] = b[1] / 8;
a[2] = b[2] / 8;
a[3] = b[3] / 8;
a[4] = b[4] / 8;
a[5] = b[5] / 8;
a[6] = b[6] / 8;
a[7] = b[7] / 8;
a[8] = b[8] / 8;
a[9] = b[9] / 8;
a[10] = b[10] / 8;
a[11] = b[11] / 8;
a[12] = b[12] / 8;
a[13] = b[13] / 8;
a[14] = b[14] / 8;
a[15] = b[15] / 8;
}
void
f2 (void)
{
c[0] = d[0] / 3;
c[1] = d[1] / 3;
c[2] = d[2] / 3;
c[3] = d[3] / 3;
c[4] = d[4] / 3;
c[5] = d[5] / 3;
c[6] = d[6] / 3;
c[7] = d[7] / 3;
c[8] = d[8] / 3;
c[9] = d[9] / 3;
c[10] = d[10] / 3;
c[11] = d[11] / 3;
c[12] = d[12] / 3;
c[13] = d[13] / 3;
c[14] = d[14] / 3;
c[15] = d[15] / 3;
}
void
f3 (void)
{
a[0] = b[0] / 8;
a[1] = b[1] / 4;
a[2] = b[2] / 8;
a[3] = b[3] / 4;
a[4] = b[4] / 8;
a[5] = b[5] / 4;
a[6] = b[6] / 8;
a[7] = b[7] / 4;
a[8] = b[8] / 8;
a[9] = b[9] / 4;
a[10] = b[10] / 8;
a[11] = b[11] / 4;
a[12] = b[12] / 8;
a[13] = b[13] / 4;
a[14] = b[14] / 8;
a[15] = b[15] / 4;
}
void
f4 (void)
{
c[0] = d[0] / 3;
c[1] = d[1] / 5;
c[2] = d[2] / 3;
c[3] = d[3] / 5;
c[4] = d[4] / 3;
c[5] = d[5] / 5;
c[6] = d[6] / 3;
c[7] = d[7] / 5;
c[8] = d[8] / 3;
c[9] = d[9] / 5;
c[10] = d[10] / 3;
c[11] = d[11] / 5;
c[12] = d[12] / 3;
c[13] = d[13] / 5;
c[14] = d[14] / 3;
c[15] = d[15] / 5;
}
void
f5 (void)
{
a[0] = b[0] / 14;
a[1] = b[1] / 15;
a[2] = b[2] / 14;
a[3] = b[3] / 15;
a[4] = b[4] / 14;
a[5] = b[5] / 15;
a[6] = b[6] / 14;
a[7] = b[7] / 15;
a[8] = b[8] / 14;
a[9] = b[9] / 15;
a[10] = b[10] / 14;
a[11] = b[11] / 15;
a[12] = b[12] / 14;
a[13] = b[13] / 15;
a[14] = b[14] / 14;
a[15] = b[15] / 15;
}
void
f6 (void)
{
c[0] = d[0] / 6;
c[1] = d[1] / 5;
c[2] = d[2] / 6;
c[3] = d[3] / 5;
c[4] = d[4] / 6;
c[5] = d[5] / 5;
c[6] = d[6] / 13;
c[7] = d[7] / 5;
c[8] = d[8] / 6;
c[9] = d[9] / 5;
c[10] = d[10] / 6;
c[11] = d[11] / 5;
c[12] = d[12] / 6;
c[13] = d[13] / 5;
c[14] = d[14] / 13;
c[15] = d[15] / 5;
}
int
main ()
{
int i;
check_vect ();
asm ("");
for (i = 0; i < 16; i++)
{
asm ("");
b[i] = i - 8;
d[i] = i - 8;
}
f1 ();
f2 ();
for (i = 0; i < 16; i++)
if (a[i] != b[i] / 8 || c[i] != d[i] / 3)
abort ();
f3 ();
f4 ();
for (i = 0; i < 16; i+= 2)
if (a[i] != b[i] / 8 || a[i + 1] != b[i + 1] / 4
|| c[i] != d[i] / 3 || c[i + 1] != d[i + 1] / 5)
abort ();
f5 ();
f6 ();
for (i = 0; i < 16; i+= 2)
if (a[i] != b[i] / 14 || a[i + 1] != b[i + 1] / 15
|| c[i] != d[i] / ((i & 7) == 6 ? 13 : 6) || c[i + 1] != d[i + 1] / 5)
abort ();
return 0;
}