1/* { dg-require-effective-target vect_int } */ 2 3#include <stdarg.h> 4#include <signal.h> 5#include "tree-vect.h" 6 7#define N 64 8#define MAX 42 9 10extern void abort(void); 11 12int main () 13{ 14 int A[N]; 15 int B[N]; 16 int C[N]; 17 int D[N]; 18 19 int i, j; 20 21 check_vect (); 22 23 for (i = 0; i < N; i++) 24 { 25 A[i] = i; 26 B[i] = i; 27 C[i] = i; 28 D[i] = i; 29 } 30 31 /* Vectorizable */ 32 for (i = 0; i < N-20; i++) 33 { 34 A[i] = A[i+20]; 35 } 36 37 /* check results: */ 38 for (i = 0; i < N-20; i++) 39 { 40 if (A[i] != D[i+20]) 41 abort (); 42 } 43 44 /* Vectorizable */ 45 for (i = 0; i < 16; i++) 46 { 47 B[i] = B[i] + 5; 48 } 49 50 /* check results: */ 51 for (i = 0; i < 16; i++) 52 { 53 if (B[i] != C[i] + 5) 54 abort (); 55 } 56 57 /* Not vectorizable */ 58 for (i = 0; i < 4; i++) 59 { 60 C[i] = C[i+3]; 61 } 62 63 /* check results: */ 64 for (i = 0; i < 4; i++) 65 { 66 if (C[i] != D[i+3]) 67 abort (); 68 } 69 70 return 0; 71} 72 73 74 75/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */ 76/* { dg-final { scan-tree-dump-times "accesses have the same alignment." 2 "vect" } } */ 77/* { dg-final { cleanup-tree-dump "vect" } } */ 78