This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: [i386] Scalar DImode instructions on XMM registers
- From: Jeff Law <law at redhat dot com>
- To: Ilya Enkovich <enkovich dot gnu at gmail dot com>
- Cc: Vladimir Makarov <vmakarov at redhat dot com>, GCC Development <gcc at gcc dot gnu dot org>, Uros Bizjak <ubizjak at gmail dot com>, Richard Henderson <rth at redhat dot com>, Jan Hubicka <hubicka at ucw dot cz>
- Date: Wed, 03 Jun 2015 22:24:48 -0600
- Subject: Re: [i386] Scalar DImode instructions on XMM registers
- Authentication-results: sourceware.org; auth=none
- References: <CAMbmDYaDrCnDCnQfP0toV87pi_mE_pbPCP6M-FEkGNDAtWKFUA at mail dot gmail dot com> <CAFULd4amXWDT45oUNqi2cLL2Tec-kMJm7Kz301myZSWZw-3H7Q at mail dot gmail dot com> <alpine dot DEB dot 2 dot 11 dot 1504241222020 dot 1687 at laptop-mg dot saclay dot inria dot fr> <CAMbmDYYfq-RVYa0MwrGH_DpnV7psPHKZpxaouMuq_nsOPeO_ug at mail dot gmail dot com> <20150425013239 dot GB719 at atrey dot karlin dot mff dot cuni dot cz> <CAMbmDYbN7Zk9gg=UNRP3O8L8e5qxiK6jXi-SLEVDoMmBbqLXFQ at mail dot gmail dot com> <CAMbmDYY+a=LeqTcajW=g=e01q=R5ALykhFLwF0ypcAhKjnv0RA at mail dot gmail dot com> <555B552A dot 8010008 at redhat dot com> <20150520081738 dot GE47912 at msticlxl57 dot ims dot intel dot com> <555D50A3 dot 2000206 at redhat dot com> <20150521095442 dot GH47912 at msticlxl57 dot ims dot intel dot com> <555E2D37 dot 30107 at redhat dot com> <CAMbmDYZZs+q=5KhgG2-KP86eqkg2YSGjhUV9QYYf3J3_4POQ+A at mail dot gmail dot com> <CAMbmDYZ5=e4KAdUsCsd0ZdNrM94QKcBX6D9qiX0eMxsWcYyHMQ at mail dot gmail dot com> <CAMbmDYav-fk=UhCfWqaS+J64wNKYkeKNOe0LXiXSzLxnzhBMng at mail dot gmail dot com> <55653A99 dot 8040905 at redhat dot com> <CAMbmDYYoDOQXwzTNyPkv4BZX75h4wpgpG5T3o=j-dsYHwjuZ8A at mail dot gmail dot com>
On 05/27/2015 07:20 AM, Ilya Enkovich wrote:
I looked into assign_stack_local_1 call for this spill. LRA correctly
requests 16 bytes size with 16 bytes alignment. But
assign_stack_local_1 look reduces alignment to 8 because estimated
stack alignment before RA is 8 and requested mode's (DI) alignment
fits it. Probably LRA should pass biggest_mode of the reg when
requesting a stack slot?
It's hard to say for sure. Within the lra_reg structure, biggest_mode
refers to the largest mode in which a pseudo is referenced. So for a
pseudo it might make sense. Presumably the biggest_mode for the pseudo
in question is larger than DImode, right?
I handled it by increasing stack_alignment_estimated when transform
some instructions to vector mode.
I haven't looked deeply, but if your pass runs after
stack_alignment_estimated is initially computed, then this seems like a
desirable way to fix the problem.
jeff