1/* { dg-do run } */ 2/* { dg-require-effective-target avx } */ 3/* { dg-options "-O2 -ftree-vectorize -mavx -mtune=generic -ffast-math" } */ 4 5#include "avx-check.h" 6 7#define N 16 8#define DIFF 242 9 10double b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45}; 11double c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; 12 13void 14main1 (double x, double max_result) 15{ 16 int i; 17 double diff = 2; 18 double max = x; 19 double min = 10; 20 21 for (i = 0; i < N; i++) { 22 diff += (b[i] - c[i]); 23 } 24 25 for (i = 0; i < N; i++) { 26 max = max < c[i] ? c[i] : max; 27 } 28 29 for (i = 0; i < N; i++) { 30 min = min > c[i] ? c[i] : min; 31 } 32 33 /* check results: */ 34 if (diff != DIFF) 35 abort (); 36 if (max != max_result) 37 abort (); 38 if (min != 0) 39 abort (); 40} 41 42static void 43avx_test (void) 44{ 45 main1 (100, 100); 46 main1 (0, 15); 47} 48