On 11/07/14 08:58, Thomas Preud'homme wrote:
Trunk revision 216971 introduced LROTATE_EXPR as the canonical representation 
for a byte swap of a 2 bytes value, as per [1]. However, backend expects 
bswaphi patterns for such operation as these operation are more specific than a 
rotation. This led to a number of testcases starting to fail such as 
gcc.target/arm/builtin-bswap16-1.c and gcc.target/aarch64/builtin-bswap-2.c 
(these were skipped with my configuration). This patch adds a check in expmed 
to expand such LROTATE_EXPR into bswaphi pattern.

[1] https://gcc.gnu.org/ml/gcc-patches/2014-10/msg00616.html

Note that this is unrelated to PR63761 (but I have diagnosed the root cause).

ChangeLog entry is as follows:

2014-11-03  Thomas Preud'homme  <thomas.preudho...@arm.com>

         * expmed.c (expand_shift_1): Expand 8 bit rotate of 16 bit value to
         bswaphi if available.
Why restrict this to 8 bit rotate of a 16 bit value? Shouldn't it apply to a 16 bit rotate of a 32 bit value, or 32 bit rotate of 64 bit value?

Jeff

Reply via email to