1  /* PR target/90991 */
       2  /* { dg-do compile } */
       3  /* { dg-options "-O2 -mavx2 -masm=att" } */
       4  /* { dg-final { scan-assembler-times "vmovaps\[ \t]\+\\(\[^\n\r]*\\), %xmm0" 1 } } */
       5  /* { dg-final { scan-assembler-times "vmovapd\[ \t]\+\\(\[^\n\r]*\\), %xmm0" 1 } } */
       6  /* { dg-final { scan-assembler-times "vmovdqa\[ \t]\+\\(\[^\n\r]*\\), %xmm0" 1 } } */
       7  /* { dg-final { scan-assembler-times "vmovups\[ \t]\+\\(\[^\n\r]*\\), %xmm0" 1 } } */
       8  /* { dg-final { scan-assembler-times "vmovupd\[ \t]\+\\(\[^\n\r]*\\), %xmm0" 1 } } */
       9  /* { dg-final { scan-assembler-times "vmovdqu\[ \t]\+\\(\[^\n\r]*\\), %xmm0" 1 } } */
      10  /* { dg-final { scan-assembler-not "vmovaps\[^\n\r]*xmm0\[^\n\r]*xmm0" } } */
      11  /* { dg-final { scan-assembler-not "vmovapd\[^\n\r]*xmm0\[^\n\r]*xmm0" } } */
      12  /* { dg-final { scan-assembler-not "vmovdqa\[^\n\r]*xmm0\[^\n\r]*xmm0" } } */
      13  
      14  #include <x86intrin.h>
      15  
      16  __m256
      17  f1 (void *a)
      18  {
      19    return _mm256_insertf128_ps (_mm256_set1_ps (0.0f), _mm_load_ps (a), 0);
      20  }
      21  
      22  __m256d
      23  f2 (void *a)
      24  {
      25    return _mm256_insertf128_pd (_mm256_set1_pd (0.0), _mm_load_pd (a), 0);
      26  }
      27  
      28  __m256i
      29  f3 (void *a)
      30  {
      31    return _mm256_insertf128_si256 (_mm256_set1_epi32 (0), _mm_load_si128 (a), 0);
      32  }
      33  
      34  __m256
      35  f4 (void *a)
      36  {
      37    return _mm256_insertf128_ps (_mm256_set1_ps (0.0f), _mm_loadu_ps (a), 0);
      38  }
      39  
      40  __m256d
      41  f5 (void *a)
      42  {
      43    return _mm256_insertf128_pd (_mm256_set1_pd (0.0), _mm_loadu_pd (a), 0);
      44  }
      45  
      46  __m256i
      47  f6 (void *a)
      48  {
      49    return _mm256_insertf128_si256 (_mm256_set1_epi32 (0), _mm_loadu_si128 (a), 0);
      50  }