This is the mail archive of the gcc-patches@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: [PATCH] Don't check for optab for 16bit bswap


On Mon, Jan 5, 2015 at 1:09 PM, Richard Biener <rguenther@suse.de> wrote:
> On January 5, 2015 3:54:40 PM CET, Thomas Preud'homme <thomas.preudhomme@arm.com> wrote:
>>> From: Oleg Endo [mailto:oleg.endo@t-online.de]
>>> Sent: Tuesday, December 30, 2014 4:25 PM
>>>
>>> I've just tried disabling the 'rotlhi3' pattern and __builtin_bswap16
>>> expands into shift + and + or (as expected).
>>> Thus, I don't think the patch will make something worse (than it
>>> already
>>>
>>> .L42:
>>>
>>> is) on some backends.  If the bswap detection bails out at the tree
>>> level, the expanded ops will be shift + and + or -- as written in the
>>> original code.  So probably, that will be the same as the fallback
>>> expansion for __builtin_bswap16, and we're back to sqrt (1).
>>>
>>> > OK, that is what I was asking - are there cases where using rot is
>>worse
>>> (like forcing a libcall or so).
>>>
>>> See also comment in expmed.c (expand_shift_1):
>>>  It is theoretically possible that the target machine might
>>>  not be able to perform either shift and hence we would
>>>  be making two libcalls rather than just the one for the
>>>  shift (similarly if IOR could not be done).  We will allow
>>>  this extremely unlikely lossage to avoid complicating the
>>>  code below.  */
>>>
>>> then goto .L42  ;)
>>
>>Yes and if the fallback expansion for a rot is actually worse than the
>>original set of stmt it means the fallback expansion should be
>>improved.
>>
>>Now I realize that said like this it sounds more like stage1 material.
>>
>>Would it be fine for next stage1?
>
> No, I think the patch is fine as-is now.

Does it cause:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64718

-- 
H.J.


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