PR inline-asm/84742
[official-gcc.git] / gcc / testsuite / gcc.target / i386 / avx512vl-abs-copysign-2.c
blob9082cdb5dbaf72e9aa24cdcba5b4768bf68aa60c
1 /* { dg-do compile { target { ! ia32 } } } */
2 /* { dg-options "-Ofast -mavx512vl" } */
4 void
5 f1 (__float128 x)
7 register __float128 a __asm ("xmm16");
8 a = x;
9 asm volatile ("" : "+v" (a));
10 a = __builtin_fabsq (a);
11 asm volatile ("" : "+v" (a));
14 void
15 f2 (__float128 x, __float128 y)
17 register __float128 a __asm ("xmm16"), b __asm ("xmm17");
18 a = x;
19 b = y;
20 asm volatile ("" : "+v" (a), "+v" (b));
21 a = __builtin_copysignq (a, b);
22 asm volatile ("" : "+v" (a));
25 void
26 f3 (__float128 x)
28 register __float128 a __asm ("xmm16");
29 a = x;
30 asm volatile ("" : "+v" (a));
31 a = -a;
32 asm volatile ("" : "+v" (a));
35 __int128_t
36 f4 (void)
38 register __int128_t a __asm ("xmm16");
39 register __int128_t __attribute__((vector_size (16))) b __asm ("xmm17");
40 a = 1;
41 asm volatile ("" : "+v" (a));
42 b[0] = a;
43 asm volatile ("" : "+v" (b));
44 return b[0];
47 /* { dg-final { scan-assembler "vpandq\[^\n\r\]*xmm16" } } */
48 /* { dg-final { scan-assembler "vporq\[^\n\r\]*xmm16" } } */
49 /* { dg-final { scan-assembler "vpxorq\[^\n\r\]*xmm16" } } */