]> git.ipfire.org Git - thirdparty/gcc.git/commit
rs6000: Generate _Decimal128 to _Decimal32 hardware conversion instructions
authorPeter Bergner <bergner@linux.ibm.com>
Sat, 18 Jul 2020 02:06:30 +0000 (21:06 -0500)
committerGiuliano Belinassi <giuliano.belinassi@usp.br>
Mon, 17 Aug 2020 16:18:29 +0000 (13:18 -0300)
commit253cbf33c4506a895583f2e195018c954c251a5b
treed800b71ee6373b3f3602aedf8e7e33e0c403ef5e
parentb7d33dd22cd3f56359edd4d0f5fe426d44314baa
rs6000: Generate _Decimal128 to _Decimal32 hardware conversion instructions

We do not currently generate hardware conversion instructions when
converting from _Decimal128 to _Decimal32.  There is no one instruction
that does the conversion, so we currently call the __dpd_trunctdsd2
lib function to do the conversion for us.  However, there is a short
sequence of dfp hardware instructions that will do the conversion
correctly.

2020-07-17  Peter Bergner  <bergner@linux.ibm.com>

gcc/
PR target/92488
* config/rs6000/dfp.md (trunctdsd2): New define_insn.
* config/rs6000/rs6000.md (define_attr "isa"): Add p9.
(define_attr "enabled"): Handle p9.

gcc/testsuite/
PR target/92488
* gcc.target/powerpc/convert-fp-128.c (bl, drsp, drdpq): Update counts.
(__dpd_trunctdsd2): Make conditional on !hard_dfp.
(__dpd_extendsddd2, __dpd_extendsdtd2, __dpd_truncddsd2,
__dpd_extendddtd2, __dpd_trunctddd2): Use !hard_dfp.
* gcc.target/powerpc/pr92488.c: New test.
gcc/config/rs6000/dfp.md
gcc/config/rs6000/rs6000.md
gcc/testsuite/gcc.target/powerpc/convert-fp-128.c
gcc/testsuite/gcc.target/powerpc/pr92488.c [new file with mode: 0644]