1  /* { dg-do compile { target { ! ia32 } } } */
       2  /* { dg-options "-O2 -mavx512vl" } */
       3  
       4  #include <x86intrin.h>
       5  
       6  __m128
       7  f1 (__m128 a, __m128 b)
       8  {
       9    register __m128 c __asm ("xmm16") = a;
      10    asm volatile ("" : "+v" (c));
      11    c = _mm_insert_ps (c, b, 1);
      12    asm volatile ("" : "+v" (c));
      13    return c;
      14  }
      15  
      16  /* { dg-final { scan-assembler "vinsertps\[^\n\r\]*xmm16" } } */
      17  
      18  __v4sf
      19  f2 (__v4sf a, float b)
      20  {
      21    register __v4sf c __asm ("xmm17") = a;
      22    asm volatile ("" : "+v" (c));
      23    c[1] = b;
      24    asm volatile ("" : "+v" (c));
      25    return c;
      26  }
      27  
      28  /* { dg-final { scan-assembler "vinsertps\[^\n\r\]*xmm17" } } */
      29  
      30  __v4sf
      31  f3 (__v4sf a, float b)
      32  {
      33    register float c __asm ("xmm18") = b;
      34    asm volatile ("" : "+v" (c));
      35    a[1] = c;
      36    return a;
      37  }
      38  
      39  /* { dg-final { scan-assembler "vinsertps\[^\n\r\]*xmm18" } } */