1 /* { dg-do compile { target { ! ia32 } } } */
2 /* { dg-options "-O2 -mavx512vl" } */
3 
4 #include <x86intrin.h>
5 
6 __m128
f1(__m128 a,__m128 b)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
f2(__v4sf a,float b)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
f3(__v4sf a,float b)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" } } */
40