This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Mode change for bswap pattern expansion



On Jan 27, 2014, at 8:59 AM, Paulo Matos <pmatos@broadcom.com> wrote:

>> -----Original Message-----
>> From: Richard Sandiford [mailto:rsandifo@linux.vnet.ibm.com]
>> Sent: 27 January 2014 16:50
>> To: Paulo Matos
>> Cc: gcc@gcc.gnu.org
>> Subject: Re: Mode change for bswap pattern expansion
>> 
>> Sorry, I meant we use an unspec for the first ("V2HI") rotate.
>> I.e. rather than:
>> 
>>  (set (subreg:V2HI (match_dup 2) 0)
>>       (rotate:V2HI (subreg:V2HI (match_dup 1) 0)
>>                    (const_int 8)))
>>  (set (match_dup 0)
>>       (rotate:SI (match_dup 2)
>>                  (const_int 16)))
>> 
>> we have:
>> 
>>  (set (match_dup 2) (unspec:SI [(match_dup 1)] UNSPEC_FOO))
>>  (set (match_dup 0)
>>       (rotate:SI (match_dup 2)
>>                  (const_int 16)))
>> 
>> In your case the define_insn for the UNSPEC_FOO pattern would have the
>> same attributes as a V2HI rotate, so it should get scheduled in the same way.
> 
> In that case it would work. My only concern would then be if it prevents further optimizations. On the other hand I am not sure if GCC would try to optimize a rotate with vector V2HI mode...
> Might give both solutions a try and see what results I get.

Maybe do a split after reload instead?

Thanks,
Andrew

> 
> Thanks,
> 
> Paulo Matos
> 
>> Thanks,
>> Richard
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]