blob: 4209a219e1d8faf2d97c97e500be470731930fc9 [file] [log] [blame]
/* { dg-do run } */
/* { dg-require-effective-target dfp } */
/* { dg-additional-options "-fsignaling-nans" } */
int
f1 (void)
{
return __builtin_issignaling (__builtin_nansd32 (""));
}
int
f2 (void)
{
return __builtin_issignaling (__builtin_nand64 (""));
}
int
f3 (void)
{
return __builtin_issignaling (0.0DD);
}
int
f4 (_Decimal32 x)
{
return __builtin_issignaling (x);
}
int
f5 (_Decimal64 x)
{
return __builtin_issignaling (x);
}
int
f6 (_Decimal128 x)
{
return __builtin_issignaling (x);
}
_Decimal32 x;
_Decimal64 y;
_Decimal128 z;
int
main ()
{
if (!f1 () || f2 () || f3 ())
__builtin_abort ();
asm volatile ("" : : : "memory");
if (f4 (x) || !f4 (__builtin_nansd32 ("0x123")) || f4 (42.0DF) || f4 (__builtin_nand32 ("0x234"))
|| f4 (__builtin_infd32 ()) || f4 (-__builtin_infd32 ()) || f4 (-42.0DF) || f4 (-0.0DF) || f4 (0.0DF))
__builtin_abort ();
x = __builtin_nansd32 ("");
asm volatile ("" : : : "memory");
if (!f4 (x))
__builtin_abort ();
if (f5 (y) || !f5 (__builtin_nansd64 ("0x123")) || f5 (42.0DD) || f5 (__builtin_nand64 ("0x234"))
|| f5 (__builtin_infd64 ()) || f5 (-__builtin_infd64 ()) || f5 (-42.0DD) || f5 (-0.0DD) || f5 (0.0DD))
__builtin_abort ();
y = __builtin_nansd64 ("");
asm volatile ("" : : : "memory");
if (!f5 (y))
__builtin_abort ();
if (f6 (z) || !f6 (__builtin_nansd128 ("0x123")) || f6 (42.0DL) || f6 (__builtin_nand128 ("0x234"))
|| f6 (__builtin_infd128 ()) || f6 (-__builtin_infd128 ()) || f6 (-42.0DL) || f6 (-0.0DL) || f6 (0.0DL))
__builtin_abort ();
z = __builtin_nansd128 ("");
asm volatile ("" : : : "memory");
if (!f6 (z))
__builtin_abort ();
return 0;
}