1/* { dg-require-effective-target vect_int } */ 2 3#include <stdarg.h> 4#include "tree-vect.h" 5 6#define N 16 7#define DIFF 242 8 9unsigned short ub[N] = {1,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45}; 10unsigned short uc[N] = {1,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; 11 12__attribute__ ((noinline)) void 13main1 (unsigned short x, unsigned short max_result, unsigned short min_result) 14{ 15 int i; 16 unsigned short udiff = 2; 17 unsigned short umax = x; 18 unsigned short umin = x; 19 20 for (i = 0; i < N; i++) { 21 udiff += (unsigned short)(ub[i] - uc[i]); 22 } 23 24 for (i = 0; i < N; i++) { 25 umax = umax < uc[i] ? uc[i] : umax; 26 } 27 28 for (i = 0; i < N; i++) { 29 umin = umin > uc[i] ? uc[i] : umin; 30 } 31 32 /* check results: */ 33 if (udiff != DIFF) 34 abort (); 35 if (umax != max_result) 36 abort (); 37 if (umin != min_result) 38 abort (); 39} 40 41int main (void) 42{ 43 check_vect (); 44 45 main1 (100, 100, 1); 46 main1 (0, 15, 0); 47 return 0; 48} 49 50/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail vect_no_int_max } } } */ 51/* { dg-final { cleanup-tree-dump "vect" } } */ 52