1 /* { dg-add-options vect_early_break } */
2 /* { dg-require-effective-target vect_early_break_hw } */
3 /* { dg-require-effective-target vect_int } */
5 /* { dg-additional-options "-O3" } */
6 /* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" { target { ! "x86_64-*-* i?86-*-*" } } } } */
11 #include "tree-vect.h"
13 #if __INT_MAX__ > 2147483647L
14 # if __INT_MAX__ >= 9223372036854775807L
15 # define BITSIZEOF_INT 64
17 # define BITSIZEOF_INT 32
20 # if __INT_MAX__ >= 2147483647L
21 # define BITSIZEOF_INT 32
23 # define BITSIZEOF_INT 16
27 #if __LONG_MAX__ > 2147483647L
28 # if __LONG_MAX__ >= 9223372036854775807L
29 # define BITSIZEOF_LONG 64
31 # define BITSIZEOF_LONG 32
34 # define BITSIZEOF_LONG 32
37 #if __LONG_LONG_MAX__ > 2147483647L
38 # if __LONG_LONG_MAX__ >= 9223372036854775807L
39 # define BITSIZEOF_LONG_LONG 64
41 # define BITSIZEOF_LONG_LONG 32
44 # define BITSIZEOF_LONG_LONG 32
47 #define MAKE_FUNS(suffix, type) \
48 int my_clrsb##suffix(type x) { \
50 int leading = (x >> CHAR_BIT * sizeof (type) - 1) & 1; \
51 for (i = 1; i < CHAR_BIT * sizeof (type); i++) \
52 if (((x >> ((CHAR_BIT * sizeof (type)) - i - 1)) & 1) \
58 MAKE_FUNS (, unsigned);
60 extern void abort (void);
61 extern void exit (int);
69 #define TEST(x, suffix) \
70 if (__builtin_clrsb##suffix (x) != my_clrsb##suffix (x)) \
73 #if BITSIZEOF_INT == 32