(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
torture/
convert-dfp-2.c
       1  /* { dg-do run } */
       2  /* { dg-require-effective-target float16_runtime } */
       3  /* { dg-require-effective-target dfprt } */
       4  /* { dg-options "-save-temps" } */
       5  /* { dg-add-options float16 } */
       6  
       7  /* Test conversions from DFP to smaller types.  */
       8  
       9  _Decimal32 var32;
      10  _Decimal64 var64;
      11  _Decimal128 var128;
      12  _Float16 var16;
      13  
      14  void __attribute__ ((__noinline__)) foo32 (_Decimal32 param32)
      15  {
      16    var16 = param32;
      17  }
      18  
      19  void __attribute__ ((__noinline__)) foo64 (_Decimal64 param64)
      20  {
      21    var16 = param64;
      22    var32 = param64;
      23  }
      24  
      25  void __attribute__ ((__noinline__)) foo128 (_Decimal128 param128)
      26  {
      27    var16 = param128;
      28    var32 = param128;
      29    var64 = param128;
      30  }
      31  
      32  int main ()
      33  {
      34    foo32 (var32);
      35    foo64 (var64);
      36    foo128 (var128);
      37    return 0;
      38  }
      39  
      40  /* { dg-final { scan-assembler-times {\t__bid_truncsdhf} 2 { target { dfp_bid } } } } */
      41  /* { dg-final { scan-assembler-times {\t__bid_truncddhf} 2 { target { dfp_bid } } } } */
      42  /* { dg-final { scan-assembler-times {\t__bid_truncddsd2} 2 { target { dfp_bid } } } } */
      43  /* { dg-final { scan-assembler-times {\t__bid_trunctdhf} 2 { target { dfp_bid } } } } */
      44  /* { dg-final { scan-assembler-times {\t__bid_trunctdsd2} 2 { target { dfp_bid } } } } */
      45  /* { dg-final { scan-assembler-times {\t__bid_trunctddd2} 2 { target { dfp_bid } } } } */