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