blob: 4c976b02495c9a7b486d1b412846cc7995f851a7 [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-O3 -mzarch -march=arch12" } */
typedef float v4sf __attribute__((vector_size(16)));
typedef double v2df __attribute__((vector_size(16)));
typedef long double v1tf __attribute__((vector_size(16)));
v4sf
neg_vfnmasb (v4sf a, v4sf b, v4sf c)
{
return -(a * b + c);
}
/* { dg-final { scan-assembler-times "vfnmasb\t%v24,%v24,%v26,%v28" 1 } } */
v2df
neg_vfnmadb (v2df a, v2df b, v2df c)
{
return -(a * b + c);
}
/* { dg-final { scan-assembler-times "vfnmadb\t%v24,%v24,%v26,%v28" 1 } } */
v1tf
neg_wfnmaxb (v1tf a, v1tf b, v1tf c)
{
return -(a * b + c);
}
/* { dg-final { scan-assembler-times "wfnmaxb\t%v24,%v24,%v26,%v28" 1 } } */
v4sf
neg_vfnmssb (v4sf a, v4sf b, v4sf c)
{
return -(a * b - c);
}
/* { dg-final { scan-assembler-times "vfnmssb\t%v24,%v24,%v26,%v28" 1 } } */
v2df
neg_vfnmsdb (v2df a, v2df b, v2df c)
{
return -(a * b - c);
}
/* { dg-final { scan-assembler-times "vfnmsdb\t%v24,%v24,%v26,%v28" 1 } } */
v1tf
neg_wfnmsxb (v1tf a, v1tf b, v1tf c)
{
return -(a * b - c);
}
/* { dg-final { scan-assembler-times "wfnmsxb\t%v24,%v24,%v26,%v28" 1 } } */