blob: 3e4ecb57ba647c8408868b369b62d3ce893ed1d3 [file] [log] [blame]
/* { dg-do run } */
/* { dg-require-effective-target float16_runtime } */
/* { dg-require-effective-target dfprt } */
/* { dg-options "-save-temps" } */
/* { dg-add-options float16 } */
/* Test conversions from DFP to smaller types. */
_Decimal32 var32;
_Decimal64 var64;
_Decimal128 var128;
_Float16 var16;
void __attribute__ ((__noinline__)) foo32 (_Decimal32 param32)
{
var16 = param32;
}
void __attribute__ ((__noinline__)) foo64 (_Decimal64 param64)
{
var16 = param64;
var32 = param64;
}
void __attribute__ ((__noinline__)) foo128 (_Decimal128 param128)
{
var16 = param128;
var32 = param128;
var64 = param128;
}
int main ()
{
foo32 (var32);
foo64 (var64);
foo128 (var128);
return 0;
}
/* { dg-final { scan-assembler-times {\t__bid_truncsdhf} 2 { target { dfp_bid } } } } */
/* { dg-final { scan-assembler-times {\t__bid_truncddhf} 2 { target { dfp_bid } } } } */
/* { dg-final { scan-assembler-times {\t__bid_truncddsd2} 2 { target { dfp_bid } } } } */
/* { dg-final { scan-assembler-times {\t__bid_trunctdhf} 2 { target { dfp_bid } } } } */
/* { dg-final { scan-assembler-times {\t__bid_trunctdsd2} 2 { target { dfp_bid } } } } */
/* { dg-final { scan-assembler-times {\t__bid_trunctddd2} 2 { target { dfp_bid } } } } */