250 lines
8.7 KiB
C
250 lines
8.7 KiB
C
/* { dg-do compile } */
|
|
/* { dg-additional-options "-Wno-pedantic -Wno-long-long -m64" } */
|
|
|
|
/* Vector return. Return via pointer. */
|
|
|
|
typedef char __attribute__ ((vector_size (1))) vc1;
|
|
typedef char __attribute__ ((vector_size (2))) vc2;
|
|
typedef char __attribute__ ((vector_size (4))) vc4;
|
|
typedef char __attribute__ ((vector_size (8))) vc8;
|
|
|
|
typedef short __attribute__ ((vector_size (2))) vs1;
|
|
typedef short __attribute__ ((vector_size (4))) vs2;
|
|
typedef short __attribute__ ((vector_size (8))) vs4;
|
|
typedef short __attribute__ ((vector_size (16))) vs8;
|
|
|
|
typedef int __attribute__ ((vector_size (4))) vi1;
|
|
typedef int __attribute__ ((vector_size (8))) vi2;
|
|
typedef int __attribute__ ((vector_size (16))) vi4;
|
|
typedef int __attribute__ ((vector_size (32))) vi8;
|
|
|
|
typedef long long __attribute__ ((vector_size (8))) vll1;
|
|
typedef long long __attribute__ ((vector_size (16))) vll2;
|
|
typedef long long __attribute__ ((vector_size (32))) vll4;
|
|
typedef long long __attribute__ ((vector_size (64))) vll8;
|
|
|
|
typedef float __attribute__ ((vector_size (4))) vf1;
|
|
typedef float __attribute__ ((vector_size (8))) vf2;
|
|
typedef float __attribute__ ((vector_size (16))) vf4;
|
|
typedef float __attribute__ ((vector_size (32))) vf8;
|
|
|
|
typedef double __attribute__ ((vector_size (8))) vd1;
|
|
typedef double __attribute__ ((vector_size (16))) vd2;
|
|
typedef double __attribute__ ((vector_size (32))) vd4;
|
|
typedef double __attribute__ ((vector_size (64))) vd8;
|
|
|
|
/* { dg-final { scan-assembler-times ".extern .func dcl_rvc1 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
|
|
vc1 dcl_rvc1 (void);
|
|
/* { dg-final { scan-assembler-times ".extern .func dcl_rvc2 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
|
|
vc2 dcl_rvc2 (void);
|
|
/* { dg-final { scan-assembler-times ".extern .func dcl_rvc4 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
|
|
vc4 dcl_rvc4 (void);
|
|
/* { dg-final { scan-assembler-times ".extern .func dcl_rvc8 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
|
|
vc8 dcl_rvc8 (void);
|
|
|
|
/* { dg-final { scan-assembler-times ".extern .func dcl_rvs1 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
|
|
vs1 dcl_rvs1 (void);
|
|
/* { dg-final { scan-assembler-times ".extern .func dcl_rvs2 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
|
|
vs2 dcl_rvs2 (void);
|
|
/* { dg-final { scan-assembler-times ".extern .func dcl_rvs4 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
|
|
vs4 dcl_rvs4 (void);
|
|
/* { dg-final { scan-assembler-times ".extern .func dcl_rvs8 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
|
|
vs8 dcl_rvs8 (void);
|
|
|
|
/* { dg-final { scan-assembler-times ".extern .func dcl_rvi1 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
|
|
vi1 dcl_rvi1 (void);
|
|
/* { dg-final { scan-assembler-times ".extern .func dcl_rvi2 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
|
|
vi2 dcl_rvi2 (void);
|
|
/* { dg-final { scan-assembler-times ".extern .func dcl_rvi4 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
|
|
vi4 dcl_rvi4 (void);
|
|
/* { dg-final { scan-assembler-times ".extern .func dcl_rvi8 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
|
|
vi8 dcl_rvi8 (void);
|
|
|
|
/* { dg-final { scan-assembler-times ".extern .func dcl_rvll1 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
|
|
vll1 dcl_rvll1 (void);
|
|
/* { dg-final { scan-assembler-times ".extern .func dcl_rvll2 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
|
|
vll2 dcl_rvll2 (void);
|
|
/* { dg-final { scan-assembler-times ".extern .func dcl_rvll4 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
|
|
vll4 dcl_rvll4 (void);
|
|
/* { dg-final { scan-assembler-times ".extern .func dcl_rvll8 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
|
|
vll8 dcl_rvll8 (void);
|
|
|
|
/* { dg-final { scan-assembler-times ".extern .func dcl_rvf1 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
|
|
vf1 dcl_rvf1 (void);
|
|
/* { dg-final { scan-assembler-times ".extern .func dcl_rvf2 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
|
|
vf2 dcl_rvf2 (void);
|
|
/* { dg-final { scan-assembler-times ".extern .func dcl_rvf4 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
|
|
vf4 dcl_rvf4 (void);
|
|
/* { dg-final { scan-assembler-times ".extern .func dcl_rvf8 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
|
|
vf8 dcl_rvf8 (void);
|
|
|
|
/* { dg-final { scan-assembler-times ".extern .func dcl_rvd1 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
|
|
vd1 dcl_rvd1 (void);
|
|
/* { dg-final { scan-assembler-times ".extern .func dcl_rvd2 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
|
|
vd2 dcl_rvd2 (void);
|
|
/* { dg-final { scan-assembler-times ".extern .func dcl_rvd4 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
|
|
vd4 dcl_rvd4 (void);
|
|
/* { dg-final { scan-assembler-times ".extern .func dcl_rvd8 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
|
|
vd8 dcl_rvd8 (void);
|
|
|
|
void test_1 (void)
|
|
{
|
|
dcl_rvc1 ();
|
|
dcl_rvc2 ();
|
|
dcl_rvc4 ();
|
|
dcl_rvc8 ();
|
|
|
|
dcl_rvs1 ();
|
|
dcl_rvs2 ();
|
|
dcl_rvs4 ();
|
|
dcl_rvs8 ();
|
|
|
|
dcl_rvi1 ();
|
|
dcl_rvi2 ();
|
|
dcl_rvi4 ();
|
|
dcl_rvi8 ();
|
|
|
|
dcl_rvll1 ();
|
|
dcl_rvll2 ();
|
|
dcl_rvll4 ();
|
|
dcl_rvll8 ();
|
|
|
|
dcl_rvf1 ();
|
|
dcl_rvf2 ();
|
|
dcl_rvf4 ();
|
|
dcl_rvf8 ();
|
|
|
|
dcl_rvd1 ();
|
|
dcl_rvd2 ();
|
|
dcl_rvd4 ();
|
|
dcl_rvd8 ();
|
|
}
|
|
|
|
#define M(T, V) ({T t;t[0]= V;t;})
|
|
|
|
/* { dg-final { scan-assembler-times ".visible .func dfn_rvc1 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
|
|
vc1 dfn_rvc1 (void)
|
|
{
|
|
return M (vc1, 1);
|
|
}
|
|
/* { dg-final { scan-assembler-times ".visible .func dfn_rvc2 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
|
|
vc2 dfn_rvc2 (void)
|
|
{
|
|
return M (vc2, 2);
|
|
}
|
|
/* { dg-final { scan-assembler-times ".visible .func dfn_rvc4 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
|
|
vc4 dfn_rvc4 (void)
|
|
{
|
|
return M (vc4, 3);
|
|
}
|
|
/* { dg-final { scan-assembler-times ".visible .func dfn_rvc8 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
|
|
vc8 dfn_rvc8 (void)
|
|
{
|
|
return M (vc8, 4);
|
|
}
|
|
|
|
/* { dg-final { scan-assembler-times ".visible .func dfn_rvs1 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
|
|
vs1 dfn_rvs1 (void)
|
|
{
|
|
return M (vs1, 5);
|
|
}
|
|
/* { dg-final { scan-assembler-times ".visible .func dfn_rvs2 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
|
|
vs2 dfn_rvs2 (void)
|
|
{
|
|
return M (vs2, 6);
|
|
}
|
|
/* { dg-final { scan-assembler-times ".visible .func dfn_rvs4 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
|
|
vs4 dfn_rvs4 (void)
|
|
{
|
|
return M (vs4, 7);
|
|
}
|
|
/* { dg-final { scan-assembler-times ".visible .func dfn_rvs8 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
|
|
vs8 dfn_rvs8 (void)
|
|
{
|
|
return M (vs8, 8);
|
|
}
|
|
|
|
/* { dg-final { scan-assembler-times ".visible .func dfn_rvi1 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
|
|
vi1 dfn_rvi1 (void)
|
|
{
|
|
return M (vi1, 9);
|
|
}
|
|
/* { dg-final { scan-assembler-times ".visible .func dfn_rvi2 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
|
|
vi2 dfn_rvi2 (void)
|
|
{
|
|
return M (vi2, 10);
|
|
}
|
|
/* { dg-final { scan-assembler-times ".visible .func dfn_rvi4 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
|
|
vi4 dfn_rvi4 (void)
|
|
{
|
|
return M (vi4, 11);
|
|
}
|
|
/* { dg-final { scan-assembler-times ".visible .func dfn_rvi8 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
|
|
vi8 dfn_rvi8 (void)
|
|
{
|
|
return M (vi8, 12);
|
|
}
|
|
|
|
/* { dg-final { scan-assembler-times ".visible .func dfn_rvll1 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
|
|
vll1 dfn_rvll1 (void)
|
|
{
|
|
return M (vll1, 13);
|
|
}
|
|
/* { dg-final { scan-assembler-times ".visible .func dfn_rvll2 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
|
|
vll2 dfn_rvll2 (void)
|
|
{
|
|
return M (vll2, 14);
|
|
}
|
|
/* { dg-final { scan-assembler-times ".visible .func dfn_rvll4 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
|
|
vll4 dfn_rvll4 (void)
|
|
{
|
|
return M (vll4, 16);
|
|
}
|
|
/* { dg-final { scan-assembler-times ".visible .func dfn_rvll8 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
|
|
vll8 dfn_rvll8 (void)
|
|
{
|
|
return M (vll8, 6);
|
|
}
|
|
|
|
/* { dg-final { scan-assembler-times ".visible .func dfn_rvf1 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
|
|
vf1 dfn_rvf1 (void)
|
|
{
|
|
return M (vf1, 17);
|
|
}
|
|
/* { dg-final { scan-assembler-times ".visible .func dfn_rvf2 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
|
|
vf2 dfn_rvf2 (void)
|
|
{
|
|
return M (vf2, 18);
|
|
}
|
|
/* { dg-final { scan-assembler-times ".visible .func dfn_rvf4 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
|
|
vf4 dfn_rvf4 (void)
|
|
{
|
|
return M (vf4, 19);
|
|
}
|
|
/* { dg-final { scan-assembler-times ".visible .func dfn_rvf8 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
|
|
vf8 dfn_rvf8 (void)
|
|
{
|
|
return M (vf8, 20);
|
|
}
|
|
|
|
/* { dg-final { scan-assembler-times ".visible .func dfn_rvd1 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
|
|
vd1 dfn_rvd1 (void)
|
|
{
|
|
return M (vd1, 21);
|
|
}
|
|
/* { dg-final { scan-assembler-times ".visible .func dfn_rvd2 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
|
|
vd2 dfn_rvd2 (void)
|
|
{
|
|
return M (vd2, 22);
|
|
}
|
|
/* { dg-final { scan-assembler-times ".visible .func dfn_rvd4 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
|
|
vd4 dfn_rvd4 (void)
|
|
{
|
|
return M (vd4, 23);
|
|
}
|
|
/* { dg-final { scan-assembler-times ".visible .func dfn_rvd8 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
|
|
vd8 dfn_rvd8 (void)
|
|
{
|
|
return M (vd8, 24);
|
|
}
|