[00/10] Enable Decimal Floating Point (DFP) on AArch64

Message ID 20220509143507.239804-1-christophe.lyon@arm.com
Headers
Series Enable Decimal Floating Point (DFP) on AArch64 |

Message

Christophe Lyon May 9, 2022, 2:34 p.m. UTC
  This patch series enables support of DFP on AArch64, using the BID
format (Binary Integer Decimal).  There is no HW support for DFP on
AArch64, and we made a choice similar to x86: BID format using
libgcc's libbid for software emulation.

This work was done independently from Andrew's patch, which I
discovered some time after I started [1].  The essence is similar
although the AArch64 back-end evolved quite a bit since then, and I add
several tests.

The ABI has been documented a few months ago: _Decimal32 is treated
like float, _Decimal64 is treated like double and _Decimal128 is
treated like long double, using the same registers and conventions
(sN, dN, qN, varargs handling).

I have patches for GDB, which I'll send once this series is committed
in GCC since the first GDB patch is to merge the libdecnumber updated.

As of testing, I have also used libdfp, which required only a couple
of minor patches, and its testsuite passes.

I have tested the whole series on aarch64, aarch64_be and x86_64, no
regression, all the DFP tests pass.

OK?

Thanks,
Christophe



[1] https://gcc.gnu.org/legacy-ml/gcc-patches/2017-07/msg00788.html

Christophe Lyon (10):
  aarch64: Enable DFP (Decimal Floating-point) (BID format)
  aarch64: Add backend support for DFP
  libgcc: Enable XF mode conversions to/from DFP modes only if supported
  libgcc: enable DFP for AArch64
  testsuite:: Fix pr39986.c testcase for AArch64
  testsuite: Add new tests for DFP under aarch64/aapcs64
  testsuite: enable more BID DFP tests for AArch64
  testsuite: Add C++ unwinding tests with Decimal Floating-Point
  libgcc: Add support for HF mode (aka __fp16) in libbid
  libgcc: use __builtin_clz and __builtin_ctz in libbid

 config/dfp.m4                                 |   3 +-
 gcc/config/aarch64/aarch64.cc                 |  95 ++++++++++---
 gcc/config/aarch64/aarch64.md                 |  86 ++++++------
 gcc/config/aarch64/iterators.md               |  28 +++-
 gcc/configure                                 |   3 +-
 gcc/doc/sourcebuild.texi                      |   3 +
 gcc/testsuite/c-c++-common/dfp/pr39986.c      |  22 +--
 gcc/testsuite/g++.dg/eh/dfp-1.C               |  54 +++++++
 gcc/testsuite/g++.dg/eh/dfp-2.C               |  54 +++++++
 gcc/testsuite/g++.dg/eh/dfp-saves-aarch64.C   |  49 +++++++
 .../gcc.dg/dfp/bid-non-canonical-d128-1.c     |   3 +-
 .../gcc.dg/dfp/bid-non-canonical-d128-2.c     |   3 +-
 .../gcc.dg/dfp/bid-non-canonical-d128-3.c     |   3 +-
 .../gcc.dg/dfp/bid-non-canonical-d128-4.c     |   3 +-
 .../gcc.dg/dfp/bid-non-canonical-d32-1.c      |   3 +-
 .../gcc.dg/dfp/bid-non-canonical-d32-2.c      |   3 +-
 .../gcc.dg/dfp/bid-non-canonical-d64-1.c      |   3 +-
 .../gcc.dg/dfp/bid-non-canonical-d64-2.c      |   3 +-
 .../gcc.target/aarch64/aapcs64/aapcs64.exp    |   8 ++
 .../gcc.target/aarch64/aapcs64/dfp-1.c        |  24 ++++
 .../gcc.target/aarch64/aapcs64/func-ret-1.c   |   7 +
 .../gcc.target/aarch64/aapcs64/func-ret-3.c   |  67 +++++++++
 .../gcc.target/aarch64/aapcs64/ice_dfp_5.c    |  20 +++
 .../aarch64/aapcs64/test_align_dfp-1.c        | 126 +++++++++++++++++
 .../aarch64/aapcs64/test_align_dfp-4.c        |  42 ++++++
 .../gcc.target/aarch64/aapcs64/test_dfp_1.c   |  31 ++++
 .../gcc.target/aarch64/aapcs64/test_dfp_10.c  |  26 ++++
 .../gcc.target/aarch64/aapcs64/test_dfp_11.c  |  34 +++++
 .../gcc.target/aarch64/aapcs64/test_dfp_12.c  |  44 ++++++
 .../gcc.target/aarch64/aapcs64/test_dfp_13.c  |  34 +++++
 .../gcc.target/aarch64/aapcs64/test_dfp_14.c  |  35 +++++
 .../gcc.target/aarch64/aapcs64/test_dfp_15.c  |  21 +++
 .../gcc.target/aarch64/aapcs64/test_dfp_16.c  |  32 +++++
 .../gcc.target/aarch64/aapcs64/test_dfp_17.c  |  37 +++++
 .../gcc.target/aarch64/aapcs64/test_dfp_18.c  |  34 +++++
 .../gcc.target/aarch64/aapcs64/test_dfp_19.c  |  35 +++++
 .../gcc.target/aarch64/aapcs64/test_dfp_2.c   |  17 +++
 .../gcc.target/aarch64/aapcs64/test_dfp_20.c  |  22 +++
 .../gcc.target/aarch64/aapcs64/test_dfp_21.c  |  21 +++
 .../gcc.target/aarch64/aapcs64/test_dfp_22.c  |  19 +++
 .../gcc.target/aarch64/aapcs64/test_dfp_23.c  |  42 ++++++
 .../gcc.target/aarch64/aapcs64/test_dfp_24.c  |  22 +++
 .../gcc.target/aarch64/aapcs64/test_dfp_25.c  |  61 ++++++++
 .../gcc.target/aarch64/aapcs64/test_dfp_26.c  |  54 +++++++
 .../gcc.target/aarch64/aapcs64/test_dfp_27.c  |  46 ++++++
 .../gcc.target/aarch64/aapcs64/test_dfp_3.c   |  18 +++
 .../gcc.target/aarch64/aapcs64/test_dfp_5.c   |  24 ++++
 .../gcc.target/aarch64/aapcs64/test_dfp_6.c   |  26 ++++
 .../gcc.target/aarch64/aapcs64/test_dfp_7.c   |  30 ++++
 .../gcc.target/aarch64/aapcs64/test_dfp_8.c   |  24 ++++
 .../gcc.target/aarch64/aapcs64/test_dfp_9.c   |  32 +++++
 .../aarch64/aapcs64/test_quad_double_dfp.c    |  26 ++++
 .../gcc.target/aarch64/aapcs64/type-def.h     | 132 ++++++++++++++++++
 .../gcc.target/aarch64/aapcs64/va_arg_dfp-1.c |  60 ++++++++
 .../aarch64/aapcs64/va_arg_dfp-10.c           |  29 ++++
 .../aarch64/aapcs64/va_arg_dfp-11.c           |  32 +++++
 .../aarch64/aapcs64/va_arg_dfp-12.c           |  64 +++++++++
 .../aarch64/aapcs64/va_arg_dfp-13.c           |  59 ++++++++
 .../aarch64/aapcs64/va_arg_dfp-14.c           |  35 +++++
 .../aarch64/aapcs64/va_arg_dfp-16.c           |  28 ++++
 .../gcc.target/aarch64/aapcs64/va_arg_dfp-2.c |  75 ++++++++++
 .../gcc.target/aarch64/aapcs64/va_arg_dfp-3.c |  94 +++++++++++++
 .../gcc.target/aarch64/aapcs64/va_arg_dfp-4.c |  90 ++++++++++++
 .../gcc.target/aarch64/aapcs64/va_arg_dfp-5.c |  47 +++++++
 .../gcc.target/aarch64/aapcs64/va_arg_dfp-6.c |  40 ++++++
 .../gcc.target/aarch64/aapcs64/va_arg_dfp-8.c |  25 ++++
 .../gcc.target/aarch64/aapcs64/va_arg_dfp-9.c |  31 ++++
 .../gcc.target/aarch64/convert-dfp-2.c        |  42 ++++++
 .../gcc.target/aarch64/convert-dfp.c          |  60 ++++++++
 gcc/testsuite/lib/target-supports.exp         |  11 ++
 libdecnumber/configure                        |   3 +-
 libgcc/Makefile.in                            |   9 +-
 libgcc/config.host                            |   6 +
 libgcc/config/libbid/_dd_to_hf.c              |  36 +++++
 libgcc/config/libbid/_dd_to_xf.c              |   2 +
 libgcc/config/libbid/_hf_to_dd.c              |  36 +++++
 libgcc/config/libbid/_hf_to_sd.c              |  36 +++++
 libgcc/config/libbid/_hf_to_td.c              |  36 +++++
 libgcc/config/libbid/_sd_to_hf.c              |  36 +++++
 libgcc/config/libbid/_sd_to_xf.c              |   2 +
 libgcc/config/libbid/_td_to_hf.c              |  36 +++++
 libgcc/config/libbid/_td_to_xf.c              |   2 +
 libgcc/config/libbid/_xf_to_dd.c              |   2 +
 libgcc/config/libbid/_xf_to_sd.c              |   2 +
 libgcc/config/libbid/_xf_to_td.c              |   2 +
 libgcc/config/libbid/bid_binarydecimal.c      |  51 +------
 libgcc/config/libbid/bid_gcc_intrinsics.h     |  30 +++-
 libgcc/configure                              |   3 +-
 88 files changed, 2698 insertions(+), 148 deletions(-)
 create mode 100644 gcc/testsuite/g++.dg/eh/dfp-1.C
 create mode 100644 gcc/testsuite/g++.dg/eh/dfp-2.C
 create mode 100644 gcc/testsuite/g++.dg/eh/dfp-saves-aarch64.C
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/dfp-1.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/ice_dfp_5.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_align_dfp-1.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_align_dfp-4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_1.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_10.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_11.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_12.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_13.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_14.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_15.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_16.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_17.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_18.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_19.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_20.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_21.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_22.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_23.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_24.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_25.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_26.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_27.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_3.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_5.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_6.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_7.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_8.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_9.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_quad_double_dfp.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-1.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-10.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-11.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-12.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-13.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-14.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-16.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-3.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-5.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-6.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-8.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-9.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/convert-dfp-2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/convert-dfp.c
 create mode 100644 libgcc/config/libbid/_dd_to_hf.c
 create mode 100644 libgcc/config/libbid/_hf_to_dd.c
 create mode 100644 libgcc/config/libbid/_hf_to_sd.c
 create mode 100644 libgcc/config/libbid/_hf_to_td.c
 create mode 100644 libgcc/config/libbid/_sd_to_hf.c
 create mode 100644 libgcc/config/libbid/_td_to_hf.c
  

Comments

Richard Sandiford May 10, 2022, 9:37 a.m. UTC | #1
Christophe Lyon via Gcc-patches <gcc-patches@gcc.gnu.org> writes:
> This patch series enables support of DFP on AArch64, using the BID
> format (Binary Integer Decimal).  There is no HW support for DFP on
> AArch64, and we made a choice similar to x86: BID format using
> libgcc's libbid for software emulation.
>
> This work was done independently from Andrew's patch, which I
> discovered some time after I started [1].  The essence is similar
> although the AArch64 back-end evolved quite a bit since then, and I add
> several tests.
>
> The ABI has been documented a few months ago: _Decimal32 is treated
> like float, _Decimal64 is treated like double and _Decimal128 is
> treated like long double, using the same registers and conventions
> (sN, dN, qN, varargs handling).
>
> I have patches for GDB, which I'll send once this series is committed
> in GCC since the first GDB patch is to merge the libdecnumber updated.
>
> As of testing, I have also used libdfp, which required only a couple
> of minor patches, and its testsuite passes.
>
> I have tested the whole series on aarch64, aarch64_be and x86_64, no
> regression, all the DFP tests pass.
>
> OK?

OK for parts 1, 3-7 and 10.  Joseph should have the final say on part 9.

Thanks,
Richard

>
> Thanks,
> Christophe
>
>
>
> [1] https://gcc.gnu.org/legacy-ml/gcc-patches/2017-07/msg00788.html
>
> Christophe Lyon (10):
>   aarch64: Enable DFP (Decimal Floating-point) (BID format)
>   aarch64: Add backend support for DFP
>   libgcc: Enable XF mode conversions to/from DFP modes only if supported
>   libgcc: enable DFP for AArch64
>   testsuite:: Fix pr39986.c testcase for AArch64
>   testsuite: Add new tests for DFP under aarch64/aapcs64
>   testsuite: enable more BID DFP tests for AArch64
>   testsuite: Add C++ unwinding tests with Decimal Floating-Point
>   libgcc: Add support for HF mode (aka __fp16) in libbid
>   libgcc: use __builtin_clz and __builtin_ctz in libbid
>
>  config/dfp.m4                                 |   3 +-
>  gcc/config/aarch64/aarch64.cc                 |  95 ++++++++++---
>  gcc/config/aarch64/aarch64.md                 |  86 ++++++------
>  gcc/config/aarch64/iterators.md               |  28 +++-
>  gcc/configure                                 |   3 +-
>  gcc/doc/sourcebuild.texi                      |   3 +
>  gcc/testsuite/c-c++-common/dfp/pr39986.c      |  22 +--
>  gcc/testsuite/g++.dg/eh/dfp-1.C               |  54 +++++++
>  gcc/testsuite/g++.dg/eh/dfp-2.C               |  54 +++++++
>  gcc/testsuite/g++.dg/eh/dfp-saves-aarch64.C   |  49 +++++++
>  .../gcc.dg/dfp/bid-non-canonical-d128-1.c     |   3 +-
>  .../gcc.dg/dfp/bid-non-canonical-d128-2.c     |   3 +-
>  .../gcc.dg/dfp/bid-non-canonical-d128-3.c     |   3 +-
>  .../gcc.dg/dfp/bid-non-canonical-d128-4.c     |   3 +-
>  .../gcc.dg/dfp/bid-non-canonical-d32-1.c      |   3 +-
>  .../gcc.dg/dfp/bid-non-canonical-d32-2.c      |   3 +-
>  .../gcc.dg/dfp/bid-non-canonical-d64-1.c      |   3 +-
>  .../gcc.dg/dfp/bid-non-canonical-d64-2.c      |   3 +-
>  .../gcc.target/aarch64/aapcs64/aapcs64.exp    |   8 ++
>  .../gcc.target/aarch64/aapcs64/dfp-1.c        |  24 ++++
>  .../gcc.target/aarch64/aapcs64/func-ret-1.c   |   7 +
>  .../gcc.target/aarch64/aapcs64/func-ret-3.c   |  67 +++++++++
>  .../gcc.target/aarch64/aapcs64/ice_dfp_5.c    |  20 +++
>  .../aarch64/aapcs64/test_align_dfp-1.c        | 126 +++++++++++++++++
>  .../aarch64/aapcs64/test_align_dfp-4.c        |  42 ++++++
>  .../gcc.target/aarch64/aapcs64/test_dfp_1.c   |  31 ++++
>  .../gcc.target/aarch64/aapcs64/test_dfp_10.c  |  26 ++++
>  .../gcc.target/aarch64/aapcs64/test_dfp_11.c  |  34 +++++
>  .../gcc.target/aarch64/aapcs64/test_dfp_12.c  |  44 ++++++
>  .../gcc.target/aarch64/aapcs64/test_dfp_13.c  |  34 +++++
>  .../gcc.target/aarch64/aapcs64/test_dfp_14.c  |  35 +++++
>  .../gcc.target/aarch64/aapcs64/test_dfp_15.c  |  21 +++
>  .../gcc.target/aarch64/aapcs64/test_dfp_16.c  |  32 +++++
>  .../gcc.target/aarch64/aapcs64/test_dfp_17.c  |  37 +++++
>  .../gcc.target/aarch64/aapcs64/test_dfp_18.c  |  34 +++++
>  .../gcc.target/aarch64/aapcs64/test_dfp_19.c  |  35 +++++
>  .../gcc.target/aarch64/aapcs64/test_dfp_2.c   |  17 +++
>  .../gcc.target/aarch64/aapcs64/test_dfp_20.c  |  22 +++
>  .../gcc.target/aarch64/aapcs64/test_dfp_21.c  |  21 +++
>  .../gcc.target/aarch64/aapcs64/test_dfp_22.c  |  19 +++
>  .../gcc.target/aarch64/aapcs64/test_dfp_23.c  |  42 ++++++
>  .../gcc.target/aarch64/aapcs64/test_dfp_24.c  |  22 +++
>  .../gcc.target/aarch64/aapcs64/test_dfp_25.c  |  61 ++++++++
>  .../gcc.target/aarch64/aapcs64/test_dfp_26.c  |  54 +++++++
>  .../gcc.target/aarch64/aapcs64/test_dfp_27.c  |  46 ++++++
>  .../gcc.target/aarch64/aapcs64/test_dfp_3.c   |  18 +++
>  .../gcc.target/aarch64/aapcs64/test_dfp_5.c   |  24 ++++
>  .../gcc.target/aarch64/aapcs64/test_dfp_6.c   |  26 ++++
>  .../gcc.target/aarch64/aapcs64/test_dfp_7.c   |  30 ++++
>  .../gcc.target/aarch64/aapcs64/test_dfp_8.c   |  24 ++++
>  .../gcc.target/aarch64/aapcs64/test_dfp_9.c   |  32 +++++
>  .../aarch64/aapcs64/test_quad_double_dfp.c    |  26 ++++
>  .../gcc.target/aarch64/aapcs64/type-def.h     | 132 ++++++++++++++++++
>  .../gcc.target/aarch64/aapcs64/va_arg_dfp-1.c |  60 ++++++++
>  .../aarch64/aapcs64/va_arg_dfp-10.c           |  29 ++++
>  .../aarch64/aapcs64/va_arg_dfp-11.c           |  32 +++++
>  .../aarch64/aapcs64/va_arg_dfp-12.c           |  64 +++++++++
>  .../aarch64/aapcs64/va_arg_dfp-13.c           |  59 ++++++++
>  .../aarch64/aapcs64/va_arg_dfp-14.c           |  35 +++++
>  .../aarch64/aapcs64/va_arg_dfp-16.c           |  28 ++++
>  .../gcc.target/aarch64/aapcs64/va_arg_dfp-2.c |  75 ++++++++++
>  .../gcc.target/aarch64/aapcs64/va_arg_dfp-3.c |  94 +++++++++++++
>  .../gcc.target/aarch64/aapcs64/va_arg_dfp-4.c |  90 ++++++++++++
>  .../gcc.target/aarch64/aapcs64/va_arg_dfp-5.c |  47 +++++++
>  .../gcc.target/aarch64/aapcs64/va_arg_dfp-6.c |  40 ++++++
>  .../gcc.target/aarch64/aapcs64/va_arg_dfp-8.c |  25 ++++
>  .../gcc.target/aarch64/aapcs64/va_arg_dfp-9.c |  31 ++++
>  .../gcc.target/aarch64/convert-dfp-2.c        |  42 ++++++
>  .../gcc.target/aarch64/convert-dfp.c          |  60 ++++++++
>  gcc/testsuite/lib/target-supports.exp         |  11 ++
>  libdecnumber/configure                        |   3 +-
>  libgcc/Makefile.in                            |   9 +-
>  libgcc/config.host                            |   6 +
>  libgcc/config/libbid/_dd_to_hf.c              |  36 +++++
>  libgcc/config/libbid/_dd_to_xf.c              |   2 +
>  libgcc/config/libbid/_hf_to_dd.c              |  36 +++++
>  libgcc/config/libbid/_hf_to_sd.c              |  36 +++++
>  libgcc/config/libbid/_hf_to_td.c              |  36 +++++
>  libgcc/config/libbid/_sd_to_hf.c              |  36 +++++
>  libgcc/config/libbid/_sd_to_xf.c              |   2 +
>  libgcc/config/libbid/_td_to_hf.c              |  36 +++++
>  libgcc/config/libbid/_td_to_xf.c              |   2 +
>  libgcc/config/libbid/_xf_to_dd.c              |   2 +
>  libgcc/config/libbid/_xf_to_sd.c              |   2 +
>  libgcc/config/libbid/_xf_to_td.c              |   2 +
>  libgcc/config/libbid/bid_binarydecimal.c      |  51 +------
>  libgcc/config/libbid/bid_gcc_intrinsics.h     |  30 +++-
>  libgcc/configure                              |   3 +-
>  88 files changed, 2698 insertions(+), 148 deletions(-)
>  create mode 100644 gcc/testsuite/g++.dg/eh/dfp-1.C
>  create mode 100644 gcc/testsuite/g++.dg/eh/dfp-2.C
>  create mode 100644 gcc/testsuite/g++.dg/eh/dfp-saves-aarch64.C
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/dfp-1.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/ice_dfp_5.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_align_dfp-1.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_align_dfp-4.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_1.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_10.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_11.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_12.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_13.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_14.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_15.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_16.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_17.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_18.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_19.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_2.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_20.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_21.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_22.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_23.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_24.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_25.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_26.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_27.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_3.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_5.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_6.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_7.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_8.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_9.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/test_quad_double_dfp.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-1.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-10.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-11.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-12.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-13.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-14.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-16.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-2.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-3.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-4.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-5.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-6.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-8.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-9.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/convert-dfp-2.c
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/convert-dfp.c
>  create mode 100644 libgcc/config/libbid/_dd_to_hf.c
>  create mode 100644 libgcc/config/libbid/_hf_to_dd.c
>  create mode 100644 libgcc/config/libbid/_hf_to_sd.c
>  create mode 100644 libgcc/config/libbid/_hf_to_td.c
>  create mode 100644 libgcc/config/libbid/_sd_to_hf.c
>  create mode 100644 libgcc/config/libbid/_td_to_hf.c