[PATCH v2] PR rtl-optimization/83565: Fix 32-bit rotate on ia64
Jim Wilson
jimw@sifive.com
Sun Dec 24 05:15:00 GMT 2017
On 12/23/2017 04:36 PM, James Clarke wrote:
> PR rtl-optimization/83565
> * gcc/config/ia64/ia64.md ("*rotrsi3_internal"): Mask out higher 32
> bits from the shift result.
> ("*rotlsi3_internal"): Likewise
This doesn't look right to me. On ia64, the upper 32-bits of a 32-bit
value in a 64-bit register are garbage bits. So there should be no need
to clear them here after the operation.
Note for instance that lshrsi3 clears the upper 32-bits before shifting
right, because they are garbage bits. And note for instance that
ashlsi3 just shifts left, and doesn't care that it is putting garbage in
the upper 32-bits.
I think either nonzero bits is broken in the SUBREG case, or ia64
perhaps should not be setting WORD_REGISTER_OPERATIONS.
Jim
More information about the Gcc-patches
mailing list