summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/aarch64/sve_speculative_3.c
blob: db35711a193d7ce59375b162f15c7d4fc6f0b368 (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
/* { dg-do compile } */
/* { dg-options "-O3 -fno-inline -ffast-math -march=armv8-a+sve -fdump-tree-vect-details -msve-vector-bits=256" } */

#include <stdint.h>

/* Speculative loop with different sizes and no data references .
   Cannot be vectorized.  */

#define SPEC_FP_LOOP(ARGTYPE,INDUCTYPE,FPTYPE)\
FPTYPE spec_fp_loop_##ARGTYPE##INDUCTYPE (ARGTYPE mask, ARGTYPE limit)\
{\
  INDUCTYPE i = 0;\
  FPTYPE f = 0.0;\
  while ((i & mask) != limit)\
    {\
      f += 1;\
      i += 1;\
    }\
  return f;\
}\

SPEC_FP_LOOP (uint32_t, uint32_t, double)

/* { dg-final { scan-tree-dump-times "not vectorized: ncopies is greater than 1" 1 "vect" } } */
/* { dg-final { scan-assembler-not "brka\tp\[0-9\]*.b, p\[0-9\]*\/z, p\[0-9\]*.b" } } */