1 /* { dg-do compile } */
2 /* { dg-options "-mavx512bw -O3 -fopenmp-simd -fdump-tree-vect-details" } */
3 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 10 "vect" } } */
4 /* { dg-final { scan-assembler-not "maskmov" } } */
5 
6 #define LENGTH 1000
7 
8 long l1[LENGTH], l2[LENGTH];
9 int i1[LENGTH], i2[LENGTH];
10 short s1[LENGTH], s2[LENGTH];
11 char c1[LENGTH], c2[LENGTH];
12 double d1[LENGTH], d2[LENGTH];
13 
test1(int n)14 int test1 (int n)
15 {
16   int i;
17   #pragma omp simd safelen(16)
18   for (i = 0; i < LENGTH; i++)
19     if (l1[i] > l2[i])
20       i1[i] = 1;
21 }
22 
test2(int n)23 int test2 (int n)
24 {
25   int i;
26   #pragma omp simd safelen(16)
27   for (i = 0; i < LENGTH; i++)
28     if (i1[i] > i2[i])
29       s1[i] = 1;
30 }
31 
test3(int n)32 int test3 (int n)
33 {
34   int i;
35   #pragma omp simd safelen(16)
36   for (i = 0; i < LENGTH; i++)
37     if (s1[i] > s2[i])
38       c1[i] = 1;
39 }
40 
test4(int n)41 int test4 (int n)
42 {
43   int i;
44   #pragma omp simd safelen(16)
45   for (i = 0; i < LENGTH; i++)
46     if (d1[i] > d2[i])
47       c1[i] = 1;
48 }
49 
test5(int n)50 int test5 (int n)
51 {
52   int i;
53   #pragma omp simd safelen(16)
54   for (i = 0; i < LENGTH; i++)
55     i1[i] = l1[i] > l2[i] ? 3 : 4;
56 }
57 
test6(int n)58 int test6 (int n)
59 {
60   int i;
61   #pragma omp simd safelen(16)
62   for (i = 0; i < LENGTH; i++)
63     s1[i] = i1[i] > i2[i] ? 3 : 4;
64 }
65 
test7(int n)66 int test7 (int n)
67 {
68   int i;
69   #pragma omp simd safelen(16)
70   for (i = 0; i < LENGTH; i++)
71     c1[i] = s1[i] > s2[i] ? 3 : 4;
72 }
73 
test8(int n)74 int test8 (int n)
75 {
76   int i;
77   #pragma omp simd safelen(16)
78   for (i = 0; i < LENGTH; i++)
79     c1[i] = d1[i] > d2[i] ? 3 : 4;
80 }
81 
test9(int n)82 int test9 (int n)
83 {
84   int i;
85   #pragma omp simd safelen(16)
86   for (i = 0; i < LENGTH; i++)
87     if (l1[i] > l2[i] && i1[i] < i2[i])
88       c1[i] = 1;
89 }
90 
test10(int n)91 int test10 (int n)
92 {
93   int i;
94   #pragma omp simd safelen(16)
95   for (i = 0; i < LENGTH; i++)
96     if (l1[i] > l2[i] && i1[i] < i2[i])
97       c1[i] = 1;
98     else
99       c1[i] = 2;
100 }
101