| /* PR target/70059 */ |
| /* { dg-do run } */ |
| /* { dg-require-effective-target avx512dq } */ |
| /* { dg-options "-O2 -mavx512dq" } */ |
| |
| #include "avx512dq-check.h" |
| |
| __attribute__((noinline, noclone)) __m512i |
| foo (__m256i a, __m256i b) |
| { |
| __m512i r = _mm512_undefined_si512 (); |
| r = _mm512_inserti32x8 (r, a, 0); |
| r = _mm512_inserti32x8 (r, b, 1); |
| return r; |
| } |
| |
| static void |
| avx512dq_test (void) |
| { |
| union256i_q a, b; |
| union512i_q r; |
| long long r_ref[8]; |
| int i; |
| for (i = 0; i < 4; i++) |
| { |
| a.a[i] = 0x0101010101010101ULL * i; |
| b.a[i] = 0x1010101010101010ULL * i; |
| r_ref[i] = a.a[i]; |
| r_ref[i + 4] = b.a[i]; |
| } |
| r.x = foo (a.x, b.x); |
| check_union512i_q (r, r_ref); |
| } |