* gcc.target/i386/pr70021.c: Add -mtune=skylake.
[official-gcc.git] / gcc / testsuite / gcc.target / i386 / avx512dq-abs-copysign-1.c
blobcb542d090582853ba9a2781a5b7a6fee23f0ad1a
1 /* { dg-do compile { target { ! ia32 } } } */
2 /* { dg-options "-Ofast -mavx512vl -mavx512dq" } */
4 void
5 f1 (float x)
7 register float a __asm ("xmm16");
8 a = x;
9 asm volatile ("" : "+v" (a));
10 a = __builtin_fabsf (a);
11 asm volatile ("" : "+v" (a));
14 void
15 f2 (float x, float y)
17 register float a __asm ("xmm16"), b __asm ("xmm17");
18 a = x;
19 b = y;
20 asm volatile ("" : "+v" (a), "+v" (b));
21 a = __builtin_copysignf (a, b);
22 asm volatile ("" : "+v" (a));
25 void
26 f3 (float x)
28 register float a __asm ("xmm16");
29 a = x;
30 asm volatile ("" : "+v" (a));
31 a = -a;
32 asm volatile ("" : "+v" (a));
35 void
36 f4 (double x)
38 register double a __asm ("xmm18");
39 a = x;
40 asm volatile ("" : "+v" (a));
41 a = __builtin_fabs (a);
42 asm volatile ("" : "+v" (a));
45 void
46 f5 (double x, double y)
48 register double a __asm ("xmm18"), b __asm ("xmm19");
49 a = x;
50 b = y;
51 asm volatile ("" : "+v" (a), "+v" (b));
52 a = __builtin_copysign (a, b);
53 asm volatile ("" : "+v" (a));
56 void
57 f6 (double x)
59 register double a __asm ("xmm18");
60 a = x;
61 asm volatile ("" : "+v" (a));
62 a = -a;
63 asm volatile ("" : "+v" (a));
66 /* { dg-final { scan-assembler "vandps\[^\n\r\]*xmm16" } } */
67 /* { dg-final { scan-assembler "vorps\[^\n\r\]*xmm16" } } */
68 /* { dg-final { scan-assembler "vxorps\[^\n\r\]*xmm16" } } */
69 /* { dg-final { scan-assembler "vandpd\[^\n\r\]*xmm18" } } */
70 /* { dg-final { scan-assembler "vorpd\[^\n\r\]*xmm18" } } */
71 /* { dg-final { scan-assembler "vxorpd\[^\n\r\]*xmm18" } } */