1 /* { dg-do compile { target lp64 } } */
2 /* { dg-require-effective-target powerpc_p9vector_ok } */
3 /* { dg-require-effective-target float128 } */
4 /* { dg-options "-mpower9-vector -O2" } */
5
6 extern _Float128 fabsf128 (_Float128);
7 extern _Float128 copysignf128 (_Float128, _Float128);
8
9 /* Check copysign optimizations that are done for double are also done for
10 _Float128. */
11
12 _Float128
13 cs_x_pos1 (_Float128 x)
14 {
15 return copysignf128 (x, 1.0Q); /* XSABSQP. */
16 }
17
18 _Float128 cs_x_neg2 (_Float128 x)
19 {
20 return copysignf128 (x, -2.0Q); /* XSNABSQP. */
21 }
22
23 /* { dg-final { scan-assembler-times {\mxsabsqp\M} 1 } } */
24 /* { dg-final { scan-assembler-times {\mxsnabsqp\M} 1 } } */
25 /* { dg-final { scan-assembler-not {\mxscpsgnqp\M} } } */
26 /* { dg-final { scan-assembler-not {\mlxvx\M} } } */
27 /* { dg-final { scan-assembler-not {\mlxv\M} } } */
28 /* { dg-final { scan-assembler-not {\mbl\M} } } */