1 /* PR middle-end/87138 */
2 /* { dg-do run { target int128 } } */
3 /* { dg-options "-O -fno-tree-fre -mavx512bw -mtune=k8" } */
4 /* { dg-require-effective-target avx512bw } */
5 
6 #include "avx512bw-check.h"
7 
8 typedef int U __attribute__ ((vector_size (64)));
9 typedef __int128 V __attribute__ ((vector_size (64)));
10 V g, i;
11 
12 static inline void
foo(unsigned h,V j,U k,V n)13 foo (unsigned h, V j, U k, V n)
14 {
15   k /= h;
16   __builtin_memmove (&h, &n, 1);
17   n[j[1]] *= 0x7FFFFFFFFFFFFFFF;
18   j[k[5]] = 0;
19   g = n;
20   i = h + j + n;
21 }
22 
23 void
avx512bw_test()24 avx512bw_test ()
25 {
26   foo (~0, (V) { }, (U) { 5 }, (V) { 3 });
27   if (g[0] != (__int128) 3 * 0x7FFFFFFFFFFFFFFF)
28     abort ();
29 }
30