1 /* { dg-do compile { target { ! ia32 } } } */ 2 /* { dg-options "-O2 -mf16c -mavx512vl -masm=att" } */ 3 4 #include <x86intrin.h> 5 6 void f1(__m128 x)7f1 (__m128 x) 8 { 9 register __m128 a __asm ("xmm16"); 10 register __m128i b __asm ("xmm17"); 11 a = x; 12 asm volatile ("" : "+v" (a)); 13 b = _mm_cvtps_ph (a, 1); 14 asm volatile ("" : "+v" (b)); 15 } 16 17 /* { dg-final { scan-assembler "vcvtps2ph\[^\n\r]*\\\$1\[^\n\r]*%xmm16\[^\n\r]*%xmm17" } } */ 18 19 void f2(__m256 x)20f2 (__m256 x) 21 { 22 register __m256 a __asm ("xmm16"); 23 register __m128i b __asm ("xmm17"); 24 a = x; 25 asm volatile ("" : "+v" (a)); 26 b = _mm256_cvtps_ph (a, 1); 27 asm volatile ("" : "+v" (b)); 28 } 29 30 /* { dg-final { scan-assembler "vcvtps2ph\[^\n\r]*\\\$1\[^\n\r]*%ymm16\[^\n\r]*%xmm17" } } */ 31 32 void f3(__m256 x,__v8hi * y)33f3 (__m256 x, __v8hi *y) 34 { 35 register __m256 a __asm ("xmm16"); 36 a = x; 37 asm volatile ("" : "+v" (a)); 38 *y = (__v8hi) _mm256_cvtps_ph (a, 1); 39 } 40 41 /* { dg-final { scan-assembler "vcvtps2ph\[^\n\r]*\\\$1\[^\n\r]*%ymm16\[^\n\r]*%\[re\]di" } } */ 42