]> git.ipfire.org Git - thirdparty/gcc.git/commit
S/390: Fix rounding for _Decimal128 to _Decimal32 conversion
authorkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 11 Mar 2016 07:47:47 +0000 (07:47 +0000)
committerkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 11 Mar 2016 07:47:47 +0000 (07:47 +0000)
commit5a86d7542dd5dbf676a035eae4c76403eb074efa
tree254ab4ee7a6889e3d64870fd698a290702b4a966
parent2a2264529ea78519946e4e573e85226c0521ce45
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@234134 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config/s390/s390.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/s390/dfp-1.c [new file with mode: 0644]