1139825Simp/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
290643Sbenno/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
390643Sbenno/* { dg-require-effective-target powerpc_altivec_ok } */
490643Sbenno/* { dg-options "-O2 -ftree-vectorize -mcpu=power6 -maltivec" } */
590643Sbenno/* { dg-final { scan-assembler "vsel" } } */
690643Sbenno/* { dg-final { scan-assembler "vrfim" } } */
790643Sbenno/* { dg-final { scan-assembler "vrfip" } } */
890643Sbenno/* { dg-final { scan-assembler "vrfiz" } } */
990643Sbenno
1090643Sbenno#ifndef SIZE
1190643Sbenno#define SIZE 1024
1290643Sbenno#endif
1390643Sbenno
1490643Sbennofloat a[SIZE] __attribute__((__aligned__(32)));
1590643Sbennofloat b[SIZE] __attribute__((__aligned__(32)));
1690643Sbennofloat c[SIZE] __attribute__((__aligned__(32)));
1790643Sbennofloat d[SIZE] __attribute__((__aligned__(32)));
1890643Sbennofloat e[SIZE] __attribute__((__aligned__(32)));
1990643Sbenno
2090643Sbennoextern float floorf (float);
2190643Sbennoextern float ceilf (float);
2290643Sbennoextern float truncf (float);
2390643Sbennoextern float copysignf (float, float);
2490643Sbenno
2590643Sbennovoid
2690643Sbennovector_floor (void)
2790643Sbenno{
2890643Sbenno  int i;
2990643Sbenno
3090643Sbenno  for (i = 0; i < SIZE; i++)
3190643Sbenno    a[i] = floorf (b[i]);
3290643Sbenno}
3390643Sbenno
3490643Sbennovoid
3590643Sbennovector_ceil (void)
36139825Simp{
3777957Sbenno  int i;
3877957Sbenno
3977957Sbenno  for (i = 0; i < SIZE; i++)
4077957Sbenno    a[i] = ceilf (b[i]);
4177957Sbenno}
4277957Sbenno
4377957Sbennovoid
4477957Sbennovector_trunc (void)
4577957Sbenno{
4677957Sbenno  int i;
4777957Sbenno
4877957Sbenno  for (i = 0; i < SIZE; i++)
4977957Sbenno    a[i] = truncf (b[i]);
5077957Sbenno}
5177957Sbenno
5277957Sbennovoid
5377957Sbennovector_copysign (void)
5477957Sbenno{
5577957Sbenno  int i;
5677957Sbenno
5777957Sbenno  for (i = 0; i < SIZE; i++)
5877957Sbenno    a[i] = copysignf (b[i], c[i]);
5977957Sbenno}
6077957Sbenno