43 lines
736 B
C
43 lines
736 B
C
/* { dg-do run } */
|
|
/* { dg-require-effective-target ultrasparc_vis2_hw } */
|
|
/* { dg-options "-mcpu=ultrasparc3 -O" } */
|
|
|
|
typedef unsigned int Vect __attribute__((vector_size(8)));
|
|
|
|
extern void abort (void);
|
|
|
|
Vect a, b, c, d;
|
|
|
|
__attribute__((noinline, noclone)) void test (void)
|
|
{
|
|
Vect mask = { 2, 2 };
|
|
int i;
|
|
|
|
c = __builtin_shuffle (a, mask);
|
|
d = __builtin_shuffle (a, b, mask);
|
|
|
|
__asm__ ("" : : "r" (&c), "r" (&d) : "memory");
|
|
|
|
for (i = 0; i < 2; ++i)
|
|
if (c[i] != a[mask[i] & 1])
|
|
abort ();
|
|
else if (mask[i] & 2)
|
|
{
|
|
if (d[i] != b[mask[i] & 1])
|
|
abort ();
|
|
}
|
|
}
|
|
|
|
int main (void)
|
|
{
|
|
int i;
|
|
for (i = 0; i < 2; ++i)
|
|
{
|
|
a[i] = i + 2;
|
|
b[i] = 2 + i + 2;
|
|
}
|
|
|
|
test ();
|
|
return 0;
|
|
}
|