Summary: | Builtin's for POWER's dxex[q] and diex[q] use the wrong types | ||
---|---|---|---|
Product: | gcc | Reporter: | Peter Bergner <bergner> |
Component: | target | Assignee: | Peter Bergner <bergner> |
Status: | CLOSED FIXED | ||
Severity: | normal | CC: | bill.schmidt, dje, munroesj, segher |
Priority: | P3 | ||
Version: | 7.0 | ||
Target Milestone: | --- | ||
URL: | https://gcc.gnu.org/ml/gcc-patches/2017-03/msg01500.html | ||
Host: | Target: | powerpc | |
Build: | Known to work: | ||
Known to fail: | 5.0, 6.0 | Last reconfirmed: | 2017-03-29 00:00:00 |
Description
Peter Bergner
2017-03-29 02:07:23 UTC
bergner@pike:~/gcc/BUGS/LTC137326$ cat dxex.i long dxex (_Decimal64 arg) { return __builtin_dxex (arg); } bergner@pike:~/gcc/BUGS/LTC137326$ gcc -O2 -mcpu=power8 -S dxex.i bergner@pike:~/gcc/BUGS/LTC137326$ cat dxex.s [snip] dxex: dxex 1,1 drintn. 0,1,1,1 dctfix 1,1 mfvsrd 3,1 blr Notice the incorrect FP -> integer cast that destroys the return value. Expected code is: dxex: dxex 0,1 mfvsrd 3,0 blr I'm testing a patch. Author: bergner Date: Thu Mar 30 19:57:20 2017 New Revision: 246594 URL: https://gcc.gnu.org/viewcvs?rev=246594&root=gcc&view=rev Log: gcc/ PR target/80246 * config/rs6000/dfp.md (dfp_dxex_<mode>): Update mode of operand 0. (dfp_diex_<mode>): Update mode of operand 1. * doc/extend.texi (dxex, dxexq): Document change to return type. (diex, diexq): Document change to argument type. gcc/testsuite/ PR target/80246 * gcc.target/powerpc/dfp-builtin-1.c: Remove unneeded dg-skip-if for Darwin and SPE. (dxex, dxexq): Update return type. (diex, diexq): Update argument type. * gcc.target/powerpc/pr80246.c: New test. Added: trunk/gcc/testsuite/gcc.target/powerpc/pr80246.c Modified: trunk/gcc/ChangeLog trunk/gcc/config/rs6000/dfp.md trunk/gcc/doc/extend.texi trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gcc.target/powerpc/dfp-builtin-1.c Author: bergner Date: Thu Mar 30 20:06:06 2017 New Revision: 246595 URL: https://gcc.gnu.org/viewcvs?rev=246595&root=gcc&view=rev Log: gcc/ Backport from mainline 2017-03-30 Peter Bergner <bergner@vnet.ibm.com> PR target/80246 * config/rs6000/dfp.md (dfp_dxex_<mode>): Update mode of operand 0. (dfp_diex_<mode>): Update mode of operand 1. * doc/extend.texi (dxex, dxexq): Document change to return type. (diex, diexq): Document change to argument type. gcc/testsuite/ Backport from mainline 2017-03-30 Peter Bergner <bergner@vnet.ibm.com> PR target/80246 * gcc.target/powerpc/dfp-builtin-1.c: Remove unneeded dg-skip-if for Darwin and SPE. (dxex, dxexq): Update return type. (diex, diexq): Update argument type. * gcc.target/powerpc/pr80246.c: New test. Added: branches/gcc-6-branch/gcc/testsuite/gcc.target/powerpc/pr80246.c Modified: branches/gcc-6-branch/gcc/ChangeLog branches/gcc-6-branch/gcc/config/rs6000/dfp.md branches/gcc-6-branch/gcc/doc/extend.texi branches/gcc-6-branch/gcc/testsuite/ChangeLog branches/gcc-6-branch/gcc/testsuite/gcc.target/powerpc/dfp-builtin-1.c Author: bergner Date: Thu Mar 30 20:09:32 2017 New Revision: 246596 URL: https://gcc.gnu.org/viewcvs?rev=246596&root=gcc&view=rev Log: gcc/ Backport from mainline 2017-03-30 Peter Bergner <bergner@vnet.ibm.com> PR target/80246 * config/rs6000/dfp.md (dfp_dxex_<mode>): Update mode of operand 0. (dfp_diex_<mode>): Update mode of operand 1. * doc/extend.texi (dxex, dxexq): Document change to return type. (diex, diexq): Document change to argument type. gcc/testsuite/ Backport from mainline 2017-03-30 Peter Bergner <bergner@vnet.ibm.com> PR target/80246 * gcc.target/powerpc/dfp-builtin-1.c: Remove unneeded dg-skip-if for Darwin and SPE. (dxex, dxexq): Update return type. (diex, diexq): Update argument type. * gcc.target/powerpc/pr80246.c: New test. Added: branches/gcc-5-branch/gcc/testsuite/gcc.target/powerpc/pr80246.c Modified: branches/gcc-5-branch/gcc/ChangeLog branches/gcc-5-branch/gcc/config/rs6000/dfp.md branches/gcc-5-branch/gcc/doc/extend.texi branches/gcc-5-branch/gcc/testsuite/ChangeLog branches/gcc-5-branch/gcc/testsuite/gcc.target/powerpc/dfp-builtin-1.c Fixed on trunk and the GCC 5 and 6 release branches. Closing as fixed. Author: bergner Date: Mon Apr 3 16:15:00 2017 New Revision: 246652 URL: https://gcc.gnu.org/viewcvs?rev=246652&root=gcc&view=rev Log: PR target/80246 * gcc.target/powerpc/pr80246.c: Require hard_dfp. Modified: trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gcc.target/powerpc/pr80246.c Author: bergner Date: Mon Apr 3 17:10:57 2017 New Revision: 246654 URL: https://gcc.gnu.org/viewcvs?rev=246654&root=gcc&view=rev Log: PR target/80246 * gcc.target/powerpc/dfp-builtin-1.c: Require hard_dfp, not powerpc_vsx_ok. (std, ld): Limit scan-assembler-times check to lp64. (stwu, stw, lwz): Add scan-assembler-times check for ilp32. * gcc.target/powerpc/dfp-builtin-2.c: Require hard_dfp, not powerpc_vsx_ok. Modified: trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gcc.target/powerpc/dfp-builtin-1.c trunk/gcc/testsuite/gcc.target/powerpc/dfp-builtin-2.c Author: bergner Date: Mon Apr 3 17:40:53 2017 New Revision: 246659 URL: https://gcc.gnu.org/viewcvs?rev=246659&root=gcc&view=rev Log: Backport from mainline 2017-04-03 Peter Bergner <bergner@vnet.ibm.com> PR target/80246 * gcc.target/powerpc/dfp-builtin-1.c: Require hard_dfp, not powerpc_vsx_ok. (std, ld): Limit scan-assembler-times check to lp64. (stwu, stw, lwz): Add scan-assembler-times check for ilp32. * gcc.target/powerpc/dfp-builtin-2.c: Require hard_dfp, not powerpc_vsx_ok. PR target/80246 * gcc.target/powerpc/pr80246.c: Require hard_dfp. Modified: branches/gcc-6-branch/gcc/testsuite/ChangeLog branches/gcc-6-branch/gcc/testsuite/gcc.target/powerpc/dfp-builtin-1.c branches/gcc-6-branch/gcc/testsuite/gcc.target/powerpc/dfp-builtin-2.c branches/gcc-6-branch/gcc/testsuite/gcc.target/powerpc/pr80246.c Author: bergner Date: Mon Apr 3 18:06:52 2017 New Revision: 246660 URL: https://gcc.gnu.org/viewcvs?rev=246660&root=gcc&view=rev Log: Backport from mainline 2017-04-03 Peter Bergner <bergner@vnet.ibm.com> PR target/80246 * gcc.target/powerpc/dfp-builtin-1.c: Require hard_dfp, not powerpc_vsx_ok. (std, ld): Limit scan-assembler-times check to lp64. (stwu, stw, lwz): Add scan-assembler-times check for ilp32. * gcc.target/powerpc/dfp-builtin-2.c: Require hard_dfp, not powerpc_vsx_ok. PR target/80246 * gcc.target/powerpc/pr80246.c: Require hard_dfp. Modified: branches/gcc-5-branch/gcc/testsuite/ChangeLog branches/gcc-5-branch/gcc/testsuite/gcc.target/powerpc/dfp-builtin-1.c branches/gcc-5-branch/gcc/testsuite/gcc.target/powerpc/dfp-builtin-2.c branches/gcc-5-branch/gcc/testsuite/gcc.target/powerpc/pr80246.c |