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)7 f1 (__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)20 f2 (__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)33 f3 (__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