summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/powerpc/float128-hw.c
blob: 71a0c24a2f2b0fbfba55828a098c511025a96fa5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
/* { dg-require-effective-target powerpc_float128_hw_ok } */
/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
/* { dg-options "-mcpu=power9 -O2" } */

__float128 f128_add (__float128 a, __float128 b) { return a+b; }
__float128 f128_sub (__float128 a, __float128 b) { return a-b; }
__float128 f128_mul (__float128 a, __float128 b) { return a*b; }
__float128 f128_div (__float128 a, __float128 b) { return a/b; }
__float128 f128_fma (__float128 a, __float128 b, __float128 c) { return (a*b)+c; }
long f128_cmove (__float128 a, __float128 b, long c, long d) { return (a == b) ? c : d; }

/* { dg-final { scan-assembler "xsaddqp"  } } */
/* { dg-final { scan-assembler "xssubqp"  } } */
/* { dg-final { scan-assembler "xsmulqp"  } } */
/* { dg-final { scan-assembler "xsdivqp"  } } */
/* { dg-final { scan-assembler "xsmaddqp" } } */
/* { dg-final { scan-assembler "xscmpuqp" } } */