diff options
author | Andrew Stubbs <ams@codesourcery.com> | 2023-04-14 17:05:15 +0100 |
---|---|---|
committer | Andrew Stubbs <ams@codesourcery.com> | 2023-04-18 12:16:40 +0100 |
commit | cfdc45f73c56ad051a53576a4e88675ced2660d4 (patch) | |
tree | 3c5d4be1ee2f857d5d16e7b3d45b3842d405ba07 /gcc/ada/gcc-interface/utils.cc | |
parent | ebaec582ca1ee33269724bff945a16655e487ad5 (diff) | |
download | gcc-cfdc45f73c56ad051a53576a4e88675ced2660d4.zip gcc-cfdc45f73c56ad051a53576a4e88675ced2660d4.tar.gz gcc-cfdc45f73c56ad051a53576a4e88675ced2660d4.tar.bz2 |
amdgcn: HardFP divide
Implement FP division using hardware instructions. This replaces both the
softfp library calls, and the --fast-math inaccurate divsion we had previously.
The GCN architecture does not have a single divide instruction, but it does
have a number of support instructions designed to make multiply-by-reciprocal
sufficiently accurate for non-fast-math usage.
gcc/ChangeLog:
* config/gcn/gcn-valu.md (SV_SFDF): New iterator.
(SV_FP): New iterator.
(scalar_mode, SCALAR_MODE): Add identity mappings for scalar modes.
(recip<mode>2): Unify the two patterns using SV_FP.
(div_scale<mode><exec_vcc>): New insn.
(div_fmas<mode><exec>): New insn.
(div_fixup<mode><exec>): New insn.
(div<mode>3): Unify the two expanders and rewrite using hardfp.
* config/gcn/gcn.cc (gcn_md_reorg): Support "vccwait" attribute.
* config/gcn/gcn.md (unspec): Add UNSPEC_DIV_SCALE, UNSPEC_DIV_FMAS,
and UNSPEC_DIV_FIXUP.
(vccwait): New attribute.
gcc/testsuite/ChangeLog:
* gcc.target/gcn/fpdiv.c: Remove the -ffast-math requirement.
Diffstat (limited to 'gcc/ada/gcc-interface/utils.cc')
0 files changed, 0 insertions, 0 deletions