URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Go to most recent revision |
Only display areas with differences |
Details |
Blame |
View Log
Rev 154 |
Rev 816 |
/* { dg-do compile } */
|
/* { dg-do compile } */
|
/* { dg-options "-std=gnu99 -O0" } */
|
/* { dg-options "-std=gnu99 -O0" } */
|
|
|
/* N1150 5.1 Conversion between decimal floating integer.
|
/* N1150 5.1 Conversion between decimal floating integer.
|
C99 6.3.1.4(1a) New. */
|
C99 6.3.1.4(1a) New. */
|
|
|
extern void abort (void);
|
extern void abort (void);
|
|
|
_Decimal32 d32;
|
_Decimal32 d32;
|
_Decimal64 d64;
|
_Decimal64 d64;
|
_Decimal128 d128;
|
_Decimal128 d128;
|
unsigned int ui;
|
unsigned int ui;
|
unsigned long ul;
|
unsigned long ul;
|
unsigned long long ull;
|
unsigned long long ull;
|
int si;
|
int si;
|
long sl;
|
long sl;
|
long long sll;
|
long long sll;
|
_Bool b;
|
_Bool b;
|
|
|
void
|
void
|
init_dfp_1 (void)
|
init_dfp_1 (void)
|
{
|
{
|
d32 = 456.789df;
|
d32 = 456.789df;
|
d64 = 23.456789dd;
|
d64 = 23.456789dd;
|
d128 = 1234.5678dl;
|
d128 = 1234.5678dl;
|
}
|
}
|
void
|
void
|
init_dfp_2 (void)
|
init_dfp_2 (void)
|
{
|
{
|
d32 = 1.23df;
|
d32 = 1.23df;
|
d64 = -3.4dd;
|
d64 = -3.4dd;
|
d128 = 0.00003dl;
|
d128 = 0.00003dl;
|
}
|
}
|
|
|
void
|
void
|
init_dfp_3 (void)
|
init_dfp_3 (void)
|
{
|
{
|
d32 = 0.0DF;
|
d32 = 0.0DF;
|
d64 = 0.0DD;
|
d64 = 0.0DD;
|
d128 = 0.0DL;
|
d128 = 0.0DL;
|
}
|
}
|
|
|
void
|
void
|
init_unsigned_int (void)
|
init_unsigned_int (void)
|
{
|
{
|
ui = 987U;
|
ui = 987U;
|
ul = 345678UL;
|
ul = 345678UL;
|
ull = 1234567ULL;
|
ull = 1234567ULL;
|
}
|
}
|
|
|
void
|
void
|
init_signed_int (void)
|
init_signed_int (void)
|
{
|
{
|
si = -987;
|
si = -987;
|
sl = -345678;
|
sl = -345678;
|
sll = -1234567;
|
sll = -1234567;
|
}
|
}
|
|
|
int
|
int
|
main ()
|
main ()
|
{
|
{
|
/* C99 Section 6.7.2 Type specifiers. Type _Bool is
|
/* C99 Section 6.7.2 Type specifiers. Type _Bool is
|
mentioned in this section. Conversions between
|
mentioned in this section. Conversions between
|
_Bool and DFP types. */
|
_Bool and DFP types. */
|
|
|
/* Decimal float to unsigned integer. */
|
/* Decimal float to unsigned integer. */
|
init_dfp_1 ();
|
init_dfp_1 ();
|
|
|
ui = d32;
|
ui = d32;
|
if (ui != 456U)
|
if (ui != 456U)
|
abort ();
|
abort ();
|
ul = d32;
|
ul = d32;
|
if (ul != 456UL)
|
if (ul != 456UL)
|
abort ();
|
abort ();
|
ull = d32;
|
ull = d32;
|
if (ull != 456ULL)
|
if (ull != 456ULL)
|
abort ();
|
abort ();
|
|
|
ui = d64;
|
ui = d64;
|
if (ui != 23U)
|
if (ui != 23U)
|
abort ();
|
abort ();
|
ul = d64;
|
ul = d64;
|
if (ul != 23UL)
|
if (ul != 23UL)
|
abort ();
|
abort ();
|
ull = d64;
|
ull = d64;
|
if (ull != 23ULL)
|
if (ull != 23ULL)
|
abort ();
|
abort ();
|
|
|
ui = d128;
|
ui = d128;
|
if (ui != 1234U)
|
if (ui != 1234U)
|
abort ();
|
abort ();
|
ul = d128;
|
ul = d128;
|
if (ul != 1234UL)
|
if (ul != 1234UL)
|
abort ();
|
abort ();
|
ull = d128;
|
ull = d128;
|
if (ull != 1234ULL)
|
if (ull != 1234ULL)
|
abort ();
|
abort ();
|
|
|
/* Decimal float to signed integer. */
|
/* Decimal float to signed integer. */
|
|
|
/* Decimal float to _Bool. */
|
/* Decimal float to _Bool. */
|
init_dfp_2 ();
|
init_dfp_2 ();
|
|
|
b = d32;
|
b = d32;
|
if (!b)
|
if (!b)
|
abort ();
|
abort ();
|
b = d64;
|
b = d64;
|
if (!b)
|
if (!b)
|
abort ();
|
abort ();
|
b = d128;
|
b = d128;
|
if (!b)
|
if (!b)
|
abort ();
|
abort ();
|
|
|
/* Unsigned integer to decimal float. */
|
/* Unsigned integer to decimal float. */
|
init_unsigned_int ();
|
init_unsigned_int ();
|
|
|
d32 = ui;
|
d32 = ui;
|
if (d32 != 987.0df)
|
if (d32 != 987.0df)
|
abort ();
|
abort ();
|
d32 = ul;
|
d32 = ul;
|
if (d32 != 345678.0df)
|
if (d32 != 345678.0df)
|
abort ();
|
abort ();
|
d32 = ull;
|
d32 = ull;
|
if (d32 != 1234567.df)
|
if (d32 != 1234567.df)
|
abort ();
|
abort ();
|
|
|
d64 = ui;
|
d64 = ui;
|
if (d64 != 987.0dd)
|
if (d64 != 987.0dd)
|
abort ();
|
abort ();
|
d64 = ul;
|
d64 = ul;
|
if (d64 != 345678.0dd)
|
if (d64 != 345678.0dd)
|
abort ();
|
abort ();
|
d64 = ull;
|
d64 = ull;
|
if (d64 != 1234567.dd)
|
if (d64 != 1234567.dd)
|
abort ();
|
abort ();
|
|
|
d128 = ui;
|
d128 = ui;
|
if (d128 != 987.0dl)
|
if (d128 != 987.0dl)
|
abort ();
|
abort ();
|
d128 = ul;
|
d128 = ul;
|
if (d128 != 345678.0dl)
|
if (d128 != 345678.0dl)
|
abort ();
|
abort ();
|
d128 = ull;
|
d128 = ull;
|
if (d128 != 1234567.dl)
|
if (d128 != 1234567.dl)
|
abort ();
|
abort ();
|
|
|
/* Signed integer to decimal float. */
|
/* Signed integer to decimal float. */
|
init_signed_int ();
|
init_signed_int ();
|
|
|
d32 = si;
|
d32 = si;
|
if (d32 != -987.0df)
|
if (d32 != -987.0df)
|
abort ();
|
abort ();
|
d32 = sl;
|
d32 = sl;
|
if (d32 != -345678.0df)
|
if (d32 != -345678.0df)
|
abort ();
|
abort ();
|
d32 = sll;
|
d32 = sll;
|
if (d32 != -1234567.df)
|
if (d32 != -1234567.df)
|
abort ();
|
abort ();
|
|
|
d64 = si;
|
d64 = si;
|
if (d64 != -987.0dd)
|
if (d64 != -987.0dd)
|
abort ();
|
abort ();
|
d64 = sl;
|
d64 = sl;
|
if (d64 != -345678.0dd)
|
if (d64 != -345678.0dd)
|
abort ();
|
abort ();
|
d64 = sll;
|
d64 = sll;
|
if (d64 != -1234567.dd)
|
if (d64 != -1234567.dd)
|
abort ();
|
abort ();
|
|
|
d128 = si;
|
d128 = si;
|
if (d128 != -987.0dl)
|
if (d128 != -987.0dl)
|
abort ();
|
abort ();
|
d128 = sl;
|
d128 = sl;
|
if (d128 != -345678.0dl)
|
if (d128 != -345678.0dl)
|
abort ();
|
abort ();
|
d128 = sll;
|
d128 = sll;
|
if (d128 != -1234567.dl)
|
if (d128 != -1234567.dl)
|
abort ();
|
abort ();
|
|
|
/* _Bool to decimal float. */
|
/* _Bool to decimal float. */
|
init_dfp_3 ();
|
init_dfp_3 ();
|
|
|
b = d32;
|
b = d32;
|
if (b)
|
if (b)
|
abort ();
|
abort ();
|
b = d64;
|
b = d64;
|
if (b)
|
if (b)
|
abort ();
|
abort ();
|
b = d128;
|
b = d128;
|
if (b)
|
if (b)
|
abort ();
|
abort ();
|
|
|
return 0;
|
return 0;
|
}
|
}
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.