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