view gcc/testsuite/g++.dg/vect/simd-clone-2.cc @ 138:fc828634a951

merge
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 08 Nov 2018 14:17:14 +0900
parents 04ced10e8804
children
line wrap: on
line source

// { dg-require-effective-target vect_simd_clones }
// { dg-additional-options "-fopenmp-simd -fno-inline -DONE_FILE" }
// { dg-additional-options "-mavx" { target avx_runtime } }

#include "../../gcc.dg/vect/tree-vect.h"

#ifdef ONE_FILE
#include "simd-clone-3.cc"
#else
#include "simd-clone-2.h"
#endif

T b __attribute__((aligned (32)));

void
do_main ()
{
  int i, r = 0;
  S a[64];
  for (i = 0; i < 64; i++)
    {
      a[i].s = i;
      b.t[i] = i;
    }
  #pragma omp simd reduction(+:r)
  for (i = 0; i < 64; i++)
    r += a[16].f0 (i);
  if (r != 64 * 63 / 2 + 64 * 16)
    __builtin_abort ();
  r = 0;
  #pragma omp simd reduction(+:r)
  for (i = 0; i < 64; i++)
    r += a[32].f1 (i);
  if (r != 64 * 63 / 2 + 64 * 32)
    __builtin_abort ();
  r = 0;
  #pragma omp simd reduction(+:r)
  for (i = 0; i < 64; i++)
    r += a[i].f2 (i);
  if (r != 64 * 63)
    __builtin_abort ();
  r = 0;
  #pragma omp simd reduction(+:r)
  for (i = 0; i < 64; i++)
    r += b.f3 (i);
  if (r != 64 * 63 / 2)
    __builtin_abort ();
}

int
main ()
{
  check_vect ();
  do_main ();
}