On 20 September 2012 09:12, Eric Botcazou <ebotca...@adacore.com> wrote:
>> The attached patch catches C constructs:
>> (A << 8) | (A >> 8)
>> where A is unsigned 16 bits
>> and maps them to builtin_bswap16(A) which can provide more efficient
>> implementations on some targets.
>
> This belongs in tree-ssa-math-opts.c:execute_optimize_bswap instead.
>
OK I'll have a look at that. Actually I modified fold-const.c because
it's here that the similar 32 bits pattern is turned into a rotate.

> When I implemented __builtin_bswap16, I didn't add this because I thought this
> would be overkill since the RTL combiner should be able to catch the pattern.
> Have you investigated on this front?  But I don't have a strong opinion.
>
No I didn't. As I said above, I looked at where the 32 bits pattern
was handled and added the 16 bits one.

Christophe.

Reply via email to