1/* { dg-require-effective-target vect_float } */ 2 3#include <stdarg.h> 4#include "tree-vect.h" 5 6#define N 256 7 8__attribute__ ((noinline)) 9void bar (const float *pa, const float *pb, const float *pc) 10{ 11 int i; 12 13 /* check results: */ 14 for (i = 0; i < N; i++) 15 { 16 if (pa[i] != (pb[i] * pc[i])) 17 abort (); 18 } 19 20 return; 21} 22 23/* Unaligned pointer accesses, with unknown alignment. 24 The loop bound is known and divisible by the vectorization factor. 25 Can't prove that the pointers don't alias. 26 vect-51.c is similar to this one with one difference: 27 the loop bound is unknown. 28 vect-44.c is similar to this one with one difference: 29 Aliasing is not a problem. */ 30 31__attribute__ ((noinline)) int 32main1 (float *pa, float *pb, float *pc) 33{ 34 int i; 35 36 for (i = 0; i < N; i++) 37 { 38 pa[i] = pb[i] * pc[i]; 39 } 40 41 bar (pa,pb,pc); 42 43 return 0; 44} 45 46int main (void) 47{ 48 int i; 49 float a[N]; 50 float b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; 51 float c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; 52 53 check_vect (); 54 55 main1 (a,b,c); 56 return 0; 57} 58 59/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail *-*-* } } } */ 60/* { dg-final { cleanup-tree-dump "vect" } } */ 61