summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/powerpc/float128-math.c
blob: 4ad3b5b8363e5102d510ff1a6bfff8436eaed87b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/* { dg-do compile { target { powerpc*-*-linux* } } } */
/* { dg-require-effective-target ppc_float128_sw } */
/* { dg-require-effective-target vsx_hw } */
/* { dg-options "-mvsx -O2 -mfloat128 -mabi=ieeelongdouble -Wno-psabi" } */

/* Test whether we convert __builtin_<math>l to __builtin_<math>f128 if the
   default long double type is IEEE 128-bit.  Also test that using the explicit
   __builtin_<math>f128 function does not interfere with the __builtin_<math>l
   function.  */

extern __float128 sinf128 (__float128);

void foo (__float128 *p, long double *q, long double *r)
{
  *p = sinf128 (*p);
  *q = __builtin_sinl (*q);
}

/* { dg-final { scan-assembler-times {\mbl sinf128\M} 2 } } */
/* { dg-final { scan-assembler-not   {\mbl sinl\M}      } } */