URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 322 |
Rev 338 |
/* PR target/35907 */
|
/* PR target/35907 */
|
/* { dg-do run { target { powerpc*-*-* && vmx_hw } } } */
|
/* { dg-do run { target { powerpc*-*-* && vmx_hw } } } */
|
/* { dg-do compile { target { powerpc*-*-* && { ! vmx_hw } } } } */
|
/* { dg-do compile { target { powerpc*-*-* && { ! vmx_hw } } } } */
|
/* { dg-require-effective-target powerpc_altivec_ok } */
|
/* { dg-require-effective-target powerpc_altivec_ok } */
|
/* { dg-options "-O2 -maltivec" } */
|
/* { dg-options "-O2 -maltivec" } */
|
|
|
#define vector __attribute__((vector_size (16)))
|
#define vector __attribute__((vector_size (16)))
|
union
|
union
|
{
|
{
|
vector int k;
|
vector int k;
|
int c[16];
|
int c[16];
|
} u, v, w;
|
} u, v, w;
|
vector int m;
|
vector int m;
|
|
|
void __attribute__((noinline))
|
void __attribute__((noinline))
|
bar (void *i, vector int j)
|
bar (void *i, vector int j)
|
{
|
{
|
asm volatile ("" : : "r" (i), "r" (&j) : "memory");
|
asm volatile ("" : : "r" (i), "r" (&j) : "memory");
|
}
|
}
|
|
|
int __attribute__((noinline))
|
int __attribute__((noinline))
|
foo (int i, vector int j)
|
foo (int i, vector int j)
|
{
|
{
|
char *p = __builtin_alloca (64 + i);
|
char *p = __builtin_alloca (64 + i);
|
m += u.k;
|
m += u.k;
|
v.k = m;
|
v.k = m;
|
w.k = j;
|
w.k = j;
|
if (__builtin_memcmp (&v.c, &w.c, 16) != 0)
|
if (__builtin_memcmp (&v.c, &w.c, 16) != 0)
|
__builtin_abort ();
|
__builtin_abort ();
|
j += u.k;
|
j += u.k;
|
bar (p, j);
|
bar (p, j);
|
j += u.k;
|
j += u.k;
|
bar (p, j);
|
bar (p, j);
|
return 0;
|
return 0;
|
}
|
}
|
|
|
void
|
void
|
test (void)
|
test (void)
|
{
|
{
|
vector int l;
|
vector int l;
|
int i;
|
int i;
|
for (i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
u.c[i] = i;
|
u.c[i] = i;
|
l = u.k;
|
l = u.k;
|
if (foo (64, l))
|
if (foo (64, l))
|
__builtin_abort ();
|
__builtin_abort ();
|
l += u.k;
|
l += u.k;
|
if (foo (64, l))
|
if (foo (64, l))
|
__builtin_abort ();
|
__builtin_abort ();
|
}
|
}
|
|
|
int
|
int
|
main ()
|
main ()
|
{
|
{
|
test ();
|
test ();
|
return 0;
|
return 0;
|
}
|
}
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.