83 lines
1.6 KiB
C
83 lines
1.6 KiB
C
/* { dg-do run { target { powerpc*-*-linux* } } } */
|
|
/* { dg-require-effective-target ppc_float128_sw } */
|
|
/* { dg-require-effective-target vsx_hw } */
|
|
/* { dg-options "-mvsx -O2" } */
|
|
|
|
/* PR 85657 -- make __ibm128 a full type. */
|
|
|
|
__attribute__ ((__noinline__))
|
|
__float128
|
|
ibm128_to_float128 (__ibm128 a)
|
|
{
|
|
return (__float128)a + 1.0q;
|
|
}
|
|
|
|
__attribute__ ((__noinline__))
|
|
__float128
|
|
ldouble_to_float128 (long double a)
|
|
{
|
|
return (__float128)a + 1.0q;
|
|
}
|
|
|
|
__attribute__ ((__noinline__))
|
|
__ibm128
|
|
float128_to_ibm128 (__float128 a)
|
|
{
|
|
return (__ibm128)a + (__ibm128)1.0;
|
|
}
|
|
|
|
__attribute__ ((__noinline__))
|
|
__ibm128
|
|
ldouble_to_ibm128 (long double a)
|
|
{
|
|
return (__ibm128)a + (__ibm128)1.0;
|
|
}
|
|
|
|
__attribute__ ((__noinline__))
|
|
long double
|
|
ibm128_to_ldouble (__ibm128 a)
|
|
{
|
|
return (long double)a + 1.0L;
|
|
}
|
|
|
|
__attribute__ ((__noinline__))
|
|
long double
|
|
float128_to_ldouble (__float128 a)
|
|
{
|
|
return (long double)a + 1.0L;
|
|
}
|
|
|
|
volatile __float128 f128 = 1.25Q;
|
|
volatile __ibm128 i128 = (__ibm128)3.5L;
|
|
volatile long double ld = 4.75L;
|
|
|
|
volatile double f128_p1 = 2.25;
|
|
volatile double i128_p1 = 4.5;
|
|
volatile double ld_p1 = 5.75;
|
|
|
|
extern void abort (void);
|
|
|
|
int
|
|
main (void)
|
|
{
|
|
if (((double) float128_to_ldouble (f128)) != f128_p1)
|
|
abort ();
|
|
|
|
if (((double) float128_to_ibm128 (f128)) != f128_p1)
|
|
abort ();
|
|
|
|
if (((double) ibm128_to_ldouble (i128)) != i128_p1)
|
|
abort ();
|
|
|
|
if (((double) ibm128_to_float128 (i128)) != i128_p1)
|
|
abort ();
|
|
|
|
if (((double) ldouble_to_ibm128 (ld)) != ld_p1)
|
|
abort ();
|
|
|
|
if (((double) ldouble_to_float128 (ld)) != ld_p1)
|
|
abort ();
|
|
|
|
return 0;
|
|
}
|