This is the mail archive of the
mailing list for the GCC project.
Re: [i386] Scalar DImode instructions on XMM registers
- From: Uros Bizjak <ubizjak at gmail dot com>
- To: Ilya Enkovich <enkovich dot gnu at gmail dot com>
- Cc: GCC Development <gcc at gcc dot gnu dot org>
- Date: Fri, 24 Apr 2015 12:21:29 +0200
- Subject: Re: [i386] Scalar DImode instructions on XMM registers
- Authentication-results: sourceware.org; auth=none
- References: <CAMbmDYYT6zE86-xAYs08VV2nWDK6Np+qEYoj+6oGM276MtBuPQ at mail dot gmail dot com> <CAFULd4YVruAT=RHgENhBcuKZgE6FvRa=8aR6WygKm9F4GjnJyg at mail dot gmail dot com> <CAFULd4aycTg3bYKx7c9GXpgiY4WeqmLh1f5HFYL6K+K35QmTWA at mail dot gmail dot com> <CAMbmDYaDrCnDCnQfP0toV87pi_mE_pbPCP6M-FEkGNDAtWKFUA at mail dot gmail dot com> <CAFULd4amXWDT45oUNqi2cLL2Tec-kMJm7Kz301myZSWZw-3H7Q at mail dot gmail dot com>
On Fri, Apr 24, 2015 at 12:14 PM, Uros Bizjak <email@example.com> wrote:
>>>>> I was looking into PR65105 and tried to generate SSE computation for a
>>>>> simple 64bit a + b + c sequence. Having no scalar integer instructions in
>>>>> SSE I have to use vector variants.
>>>> Is this approach really better that having two add/addc instructions?
>>> FYI, V1DI mode was introduced because XMM shift insn were used to
>>> shift DImode values. The cost of moves from/to integer DImode reg pair
>>> was disastrous.
>> Does it mean I have to add V1DI instructions for all opcodes I want to
>> transform (add,sub,mul,or,and, etc.)?
> Please try to generate paradoxical subreg (V2DImode subreg of V1DImode
> pseudo). IIRC, there is some functionality in the compiler that is
> able to tell if the highpart of the paradoxical register is zeroed.
Probably you can even generate paradoxical V2DImode subreg of DImode.
I'm not sure if in this case register allocator degenerates the mode
of resulting hard register to DImode, it is worth a try.