1/* { dg-require-effective-target vect_int } */ 2 3#include <stdarg.h> 4#include "tree-vect.h" 5 6#define N 256 7volatile int y = 0; 8 9__attribute__ ((noinline)) 10void main1 (signed char x, signed char max_result, signed char min_result) 11{ 12 int i; 13 signed char b[N]; 14 signed char c[N]; 15 signed char check_diff = 2; 16 signed char diff = 2; 17 signed char max = x; 18 signed char min = x; 19 20 check_diff = 2; 21 for (i = 0; i < N; i++) { 22 b[i] = i; 23 c[i] = i; 24 if (i%16 == 0) 25 { 26 c[i] = i + 1; 27 check_diff += 1; 28 } 29 if (c[i] > max_result) 30 max_result = c[i]; 31 if (c[i] < min_result) 32 min_result = c[i]; 33 /* Avoid vectorization. */ 34 if (y) 35 abort (); 36 } 37 38 for (i = 0; i < N; i++) { 39 diff += (signed char) (c[i] - b[i]); 40 } 41 42 for (i = 0; i < N; i++) { 43 max = max < c[i] ? c[i] : max; 44 } 45 46 for (i = 0; i < N; i++) { 47 min = min > c[i] ? c[i] : min; 48 } 49 50 /* check results: */ 51 if (diff != check_diff) 52 abort (); 53 if (max != max_result) 54 abort (); 55 if (min != min_result) 56 abort (); 57} 58 59int main (void) 60{ 61 check_vect (); 62 63 main1 (100, 100, 1); 64 main1 (0, 15, 0); 65 return 0; 66} 67 68/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail *-*-* } } } */ 69/* { dg-final { cleanup-tree-dump "vect" } } */ 70