[Bug target/88998] [7/8/9 Regression] bad codegen with mmx instructions for unordered_map
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88998 Uroš Bizjak changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #8 from Uroš Bizjak --- Fixed everywhere.
[Bug target/88998] [7/8/9 Regression] bad codegen with mmx instructions for unordered_map
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88998 --- Comment #7 from uros at gcc dot gnu.org --- Author: uros Date: Thu Jan 24 19:14:58 2019 New Revision: 268244 URL: https://gcc.gnu.org/viewcvs?rev=268244=gcc=rev Log: PR target/88998 * config/i386/sse.md (sse2_cvtpi2pd): Add SSE alternatives. Disparage MMX alternative. (sse2_cvtpd2pi): Ditto. (sse2_cvttpd2pi): Ditto. testsuite/ChangeLog: PR target/88998 * g++.dg/pr88998.c: New test. Added: branches/gcc-7-branch/gcc/testsuite/g++.dg/pr88998.C Modified: branches/gcc-7-branch/gcc/ChangeLog branches/gcc-7-branch/gcc/config/i386/sse.md branches/gcc-7-branch/gcc/testsuite/ChangeLog
[Bug target/88998] [7/8/9 Regression] bad codegen with mmx instructions for unordered_map
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88998 --- Comment #6 from uros at gcc dot gnu.org --- Author: uros Date: Thu Jan 24 19:12:55 2019 New Revision: 268242 URL: https://gcc.gnu.org/viewcvs?rev=268242=gcc=rev Log: PR target/88998 * config/i386/sse.md (sse2_cvtpi2pd): Add SSE alternatives. Disparage MMX alternative. (sse2_cvtpd2pi): Ditto. (sse2_cvttpd2pi): Ditto. testsuite/ChangeLog: PR target/88998 * g++.dg/pr88998.c: New test. Added: branches/gcc-8-branch/gcc/testsuite/g++.dg/pr88998.C Modified: branches/gcc-8-branch/gcc/ChangeLog branches/gcc-8-branch/gcc/config/i386/sse.md branches/gcc-8-branch/gcc/testsuite/ChangeLog
[Bug target/88998] [7/8/9 Regression] bad codegen with mmx instructions for unordered_map
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88998 --- Comment #5 from uros at gcc dot gnu.org --- Author: uros Date: Wed Jan 23 19:10:58 2019 New Revision: 268195 URL: https://gcc.gnu.org/viewcvs?rev=268195=gcc=rev Log: PR target/88998 * config/i386/sse.md (sse2_cvtpi2pd): Add SSE alternatives. Disparage MMX alternative. (sse2_cvtpd2pi): Ditto. (sse2_cvttpd2pi): Ditto. testsuite/ChangeLog: PR target/88998 * g++.target/i386/pr88998.c: New test. Added: trunk/gcc/testsuite/g++.target/i386/pr88998.C Modified: trunk/gcc/ChangeLog trunk/gcc/config/i386/sse.md trunk/gcc/testsuite/ChangeLog
[Bug target/88998] [7/8/9 Regression] bad codegen with mmx instructions for unordered_map
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88998 Uroš Bizjak changed: What|Removed |Added Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |ubizjak at gmail dot com --- Comment #4 from Uroš Bizjak --- Created attachment 45503 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45503=edit Proposed patch We can use cvtdq2pd instead of cvtpi2pd and directly use xmm input register. The patched compiler generates: vmovd %edi, %xmm1 vpinsrd $1, %esi, %xmm1, %xmm0 vcvtdq2pd %xmm0, %xmm0 vhaddpd %xmm0, %xmm0, %xmm0 ret which avoids MMX registers altogether. The patch also amends cvtpd2pi/cvttpd2pi in a similar way, so it can output directly to xmm register.
[Bug target/88998] [7/8/9 Regression] bad codegen with mmx instructions for unordered_map
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88998 Richard Biener changed: What|Removed |Added Keywords||wrong-code Priority|P3 |P2 Known to work||6.4.0 Target Milestone|--- |7.5 Summary|bad codegen with mmx|[7/8/9 Regression] bad |instructions for|codegen with mmx |unordered_map |instructions for ||unordered_map Known to fail||7.3.1, 8.2.1, 9.0 --- Comment #3 from Richard Biener --- Hmm, I see no explicit MMX reg/intrinsic uses in the testcase if I am not mistaken so the compiler should not end up using MMX. GCC 6 "failed" to do this optimization, but the issue might have been latent there.