aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/powerpc/p10-bifs-vectorize-run-1.c
blob: 828fbe1f9a7434d8ea66d0c157d7cf04bb1d1f6b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/* { dg-do run } */
/* The checked bifs are only supported on 64-bit env.  */
/* { dg-require-effective-target lp64 } */
/* { dg-require-effective-target power10_hw } */
/* { dg-options "-mdejagnu-cpu=power10 -O2 -ftree-vectorize -fno-vect-cost-model" } */

#include "p10-bifs-vectorize-1.h"

/* Check if vectorized built-in functions run expectedly.  */

/* Make optimize (1) to avoid vectorization applied on check func.  */

#define CHECK(name)                                                           \
  __attribute__ ((optimize (1))) void check_##name ()                         \
  {                                                                           \
    test_##name ();                                                           \
    for (int i = 0; i < N; i++)                                               \
      {                                                                       \
	uLL exp = __builtin_##name (ull_a[i], ull_b[i]);                      \
	if (exp != ull_c[i])                                                  \
	  __builtin_abort ();                                                 \
      }                                                                       \
  }

CHECK (cfuged)
CHECK (cntlzdm)
CHECK (cnttzdm)
CHECK (pdepd)
CHECK (pextd)

int
main ()
{
  for (int i = 0; i < N; i++)
    {
      ull_a[i] = 0x789a * (i * 11 - 5) - 0xcd1 * (i * 5 - 7);
      ull_b[i] = 0xfedc * (i * 7 + 3) + 0x467 * (i * 7 - 11);
    }

  check_cfuged ();
  check_cntlzdm ();
  check_cnttzdm ();
  check_pdepd ();
  check_pextd ();

  return 0;
}