Viewing file: pr68956.c (1.1 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { dg-do run } */ /* { dg-options "-O2 -ffast-math -mfpmath=sse -mavx2 -ftree-vectorize" } */ /* { dg-require-effective-target avx2 } */
#include "avx2-check.h"
extern void abort (void);
int l;
static void __attribute__((noclone,noinline)) test1 (double *in1, double *in2, double *out, int l1, int l2, int *n) { double sum; int na = n[0]; int nb = n[1]; int i; _Bool ic, jc;
jc = (l > na) && (l > nb); for (int i = 0; i < l2; i++) { ic = (i <= na) && (i <= nb); sum = 0; if (ic && jc) sum = in1[i] + in2[i]; out[i] = sum; } }
static void avx2_test (void) { double in1[40], in2[40], out[40], sum; int n[2],l1,l2,i,na,nb; _Bool ic, jc;
l = 0; l1 = 8; l2 = 40; n[0] = 14; n[1] = 13;
for (i = 0; i < l2; i++) { in1[i] = i; in2[i] = i; out[i] = 0; }
test1 (in1, in2, out, l1, l2, n);
na = n[0]; nb = n[1];
jc = (l > na) && (l > nb); for (int i = 0; i < l2; i++) { ic = (i <= na) && (i <= nb); sum = 0; if (ic && jc) sum = in1[i] + in2[i]; if (out[i] != sum) abort (); } }
|