1 /* { dg-do compile } */
2 /* { dg-options "-mavx512bw -mavx512dq -mno-stackrealign -O3 -fopenmp-simd -fdump-tree-vect-details" } */
3 /* Disabling epilogues until we find a better way to deal with scans. */
4 /* { dg-additional-options "--param vect-epilogues-nomask=0" } */
5 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 10 "vect" } } */
6 /* { dg-final { scan-assembler-not "maskmov" } } */
10 long l1
[LENGTH
], l2
[LENGTH
];
11 int i1
[LENGTH
], i2
[LENGTH
];
12 short s1
[LENGTH
], s2
[LENGTH
];
13 char c1
[LENGTH
], c2
[LENGTH
];
14 double d1
[LENGTH
], d2
[LENGTH
];
19 #pragma omp simd safelen(16)
20 for (i
= 0; i
< LENGTH
; i
++)
28 #pragma omp simd safelen(32)
29 for (i
= 0; i
< LENGTH
; i
++)
37 #pragma omp simd safelen(32)
38 for (i
= 0; i
< LENGTH
; i
++)
46 #pragma omp simd safelen(32)
47 for (i
= 0; i
< LENGTH
; i
++)
55 #pragma omp simd safelen(32)
56 for (i
= 0; i
< LENGTH
; i
++)
57 l1
[i
] = i1
[i
] > i2
[i
] ? 1 : 2;
63 #pragma omp simd safelen(32)
64 for (i
= 0; i
< LENGTH
; i
++)
65 i1
[i
] = s1
[i
] > s2
[i
] ? 1 : 2;
71 #pragma omp simd safelen(32)
72 for (i
= 0; i
< LENGTH
; i
++)
73 s1
[i
] = c1
[i
] > c2
[i
] ? 1 : 2;
79 #pragma omp simd safelen(32)
80 for (i
= 0; i
< LENGTH
; i
++)
81 d1
[i
] = c1
[i
] > c2
[i
] ? 1 : 2;
87 #pragma omp simd safelen(16)
88 for (i
= 0; i
< LENGTH
; i
++)
89 if (c1
[i
] > c2
[i
] && i1
[i
] < i2
[i
])
96 #pragma omp simd safelen(16)
97 for (i
= 0; i
< LENGTH
; i
++)
98 if (c1
[i
] > c2
[i
] && i1
[i
] < i2
[i
])