1/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */ 2/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ 3/* { dg-require-effective-target powerpc_altivec_ok } */ 4/* { dg-options "-O2 -ftree-vectorize -mcpu=power6 -maltivec" } */ 5/* { dg-final { scan-assembler "vsel" } } */ 6/* { dg-final { scan-assembler "vrfim" } } */ 7/* { dg-final { scan-assembler "vrfip" } } */ 8/* { dg-final { scan-assembler "vrfiz" } } */ 9 10#ifndef SIZE 11#define SIZE 1024 12#endif 13 14float a[SIZE] __attribute__((__aligned__(32))); 15float b[SIZE] __attribute__((__aligned__(32))); 16float c[SIZE] __attribute__((__aligned__(32))); 17float d[SIZE] __attribute__((__aligned__(32))); 18float e[SIZE] __attribute__((__aligned__(32))); 19 20extern float floorf (float); 21extern float ceilf (float); 22extern float truncf (float); 23extern float copysignf (float, float); 24 25void 26vector_floor (void) 27{ 28 int i; 29 30 for (i = 0; i < SIZE; i++) 31 a[i] = floorf (b[i]); 32} 33 34void 35vector_ceil (void) 36{ 37 int i; 38 39 for (i = 0; i < SIZE; i++) 40 a[i] = ceilf (b[i]); 41} 42 43void 44vector_trunc (void) 45{ 46 int i; 47 48 for (i = 0; i < SIZE; i++) 49 a[i] = truncf (b[i]); 50} 51 52void 53vector_copysign (void) 54{ 55 int i; 56 57 for (i = 0; i < SIZE; i++) 58 a[i] = copysignf (b[i], c[i]); 59} 60