1264790Sbapt/* { dg-do run } */ 2/* { dg-options "-O2 -mavx512f" } */ 3/* { dg-require-effective-target avx512f } */ 4 5#include "avx512f-check.h" 6 7static __m512i 8__attribute__ ((noinline)) 9foo (long long x, int i) 10{ 11 switch (i) 12 { 13 case 7: 14 return _mm512_set_epi64 (x, 0, 0, 0, 0, 0, 0, 0); 15 case 6: 16 return _mm512_set_epi64 (0, x, 0, 0, 0, 0, 0, 0); 17 case 5: 18 return _mm512_set_epi64 (0, 0, x, 0, 0, 0, 0, 0); 19 case 4: 20 return _mm512_set_epi64 (0, 0, 0, x, 0, 0, 0, 0); 21 case 3: 22 return _mm512_set_epi64 (0, 0, 0, 0, x, 0, 0, 0); 23 case 2: 24 return _mm512_set_epi64 (0, 0, 0, 0, 0, x, 0, 0); 25 case 1: 26 return _mm512_set_epi64 (0, 0, 0, 0, 0, 0, x, 0); 27 case 0: 28 return _mm512_set_epi64 (0, 0, 0, 0, 0, 0, 0, x); 29 default: 30 abort (); 31 } 32} 33 34static __m512i 35__attribute__ ((noinline)) 36foo_r (long long x, int i) 37{ 38 switch (i) 39 { 40 case 0: 41 return _mm512_setr_epi64 (x, 0, 0, 0, 0, 0, 0, 0); 42 case 1: 43 return _mm512_setr_epi64 (0, x, 0, 0, 0, 0, 0, 0); 44 case 2: 45 return _mm512_setr_epi64 (0, 0, x, 0, 0, 0, 0, 0); 46 case 3: 47 return _mm512_setr_epi64 (0, 0, 0, x, 0, 0, 0, 0); 48 case 4: 49 return _mm512_setr_epi64 (0, 0, 0, 0, x, 0, 0, 0); 50 case 5: 51 return _mm512_setr_epi64 (0, 0, 0, 0, 0, x, 0, 0); 52 case 6: 53 return _mm512_setr_epi64 (0, 0, 0, 0, 0, 0, x, 0); 54 case 7: 55 return _mm512_setr_epi64 (0, 0, 0, 0, 0, 0, 0, x); 56 default: 57 abort (); 58 } 59} 60 61static void 62avx512f_test (void) 63{ 64 long long e = 0xabadbeef01234567LL; 65 long long v[8]; 66 union512i_q res; 67 int i, j; 68 69 for (i = 0; i < 8; i++) 70 { 71 for (j = 0; j < 8; j++) 72 v[j] = 0; 73 v[i] = e; 74 75 res.x = foo (e, i); 76 77 if (check_union512i_q (res, v)) 78 abort (); 79 80 res.x = _mm512_setzero_si512 (); 81 82 res.x = foo_r (e, i); 83 84 if (check_union512i_q (res, v)) 85 abort (); 86 } 87} 88