]> git.ipfire.org Git - thirdparty/gcc.git/commit - gcc/config/s390/s390.md
S/390: Fix rounding for _Decimal128 to _Decimal32 conversion
authorAndreas Krebbel <krebbel@linux.vnet.ibm.com>
Fri, 11 Mar 2016 07:47:47 +0000 (07:47 +0000)
committerAndreas Krebbel <krebbel@gcc.gnu.org>
Fri, 11 Mar 2016 07:47:47 +0000 (07:47 +0000)
commit432d4670c0457098bc6e0e70963881c232350daa
tree254ab4ee7a6889e3d64870fd698a290702b4a966
parentae8e301e08b084da8e2142aa195135cae718cd70
S/390: Fix rounding for _Decimal128 to _Decimal32 conversion

We do not have a direct conversion instruction from 128 bit DFP to 32
bit DFP so this needs to be done in two steps.  The first needs to be
done with the "prepare for shorter precision rounding mode" in order
to produce a correct result.

gcc/ChangeLog:

2016-03-11  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

* config/s390/s390.md ("trunctddd2"): Turn former define_insn into
define_expand.
("*trunctddd2"): New pattern definition.
("trunctdsd2"): Set prep_for_short_prec rounding mode for the
TD->DD truncation.

gcc/testsuite/ChangeLog:

2016-03-11  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

* gcc.target/s390/dfp-1.c: New test.

From-SVN: r234134
gcc/ChangeLog
gcc/config/s390/s390.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/s390/dfp-1.c [new file with mode: 0644]