2 /* { dg-require-effective-target p8vector_hw } */
3 /* { dg-options "-O2 -ftree-vectorize -mdejagnu-cpu=power8 -fno-vect-cost-model -fdump-tree-vect-details" } */
5 /* To test condition reduction vectorization, where comparison operands are of
6 unsigned long long type and condition true/false values are integer type. */
11 abort (void) __attribute__ ((noreturn
));
14 #define FP_TYPE unsigned long long
16 __attribute__ ((noinline
)) int
17 test_eq (FP_TYPE
*a
, FP_TYPE min_v
)
21 for (int i
= 0; i
< N
; i
++)
28 __attribute__ ((noinline
)) int
29 test_ne (FP_TYPE
*a
, FP_TYPE min_v
)
33 for (int i
= 0; i
< N
; i
++)
40 __attribute__ ((noinline
)) int
41 test_gt (FP_TYPE
*a
, FP_TYPE min_v
)
45 for (int i
= 0; i
< N
; i
++)
52 __attribute__ ((noinline
)) int
53 test_ge (FP_TYPE
*a
, FP_TYPE min_v
)
57 for (int i
= 0; i
< N
; i
++)
64 __attribute__ ((noinline
)) int
65 test_lt (FP_TYPE
*a
, FP_TYPE min_v
)
69 for (int i
= 0; i
< N
; i
++)
76 __attribute__ ((noinline
)) int
77 test_le (FP_TYPE
*a
, FP_TYPE min_v
)
81 for (int i
= 0; i
< N
; i
++)
93 FP_TYPE a1
[N
] = {11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 1, 2, 3, 4,
94 5, 6, 7, 8, 9, 10, 21, 22, 23, 24, 25, 26, 27};
96 FP_TYPE a2
[N
] = {21, 22, 23, 24, 25, 26, 27, 28, 29, 10, 11, 12, 13, 14,
97 15, 16, 17, 18, 19, 20, 1, 2, 3, 4, 5, 6, 7};
99 ret
= test_eq (a1
, 10);
103 ret
= test_ne (a1
, 10);
107 ret
= test_gt (a2
, 10);
111 ret
= test_ge (a2
, 10);
115 ret
= test_lt (a1
, 10);
119 ret
= test_le (a1
, 10);
126 /* { dg-final { scan-tree-dump-times "LOOP VECTORIZED" 6 "vect" } } */