mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-18 18:42:46 +02:00
[AVR] Expand 16-bit rotations during the legalization stage
In r356860, the legalization logic for BSWAP was modified to ISD::ROTL, rather than the old ISD::{SHL, SRL, OR} nodes. This works fine on AVR for 8-bit rotations, but 16-bit rotations are currently unimplemented - they always trigger an assertion error in the AVRExpandPseudoInsts pass ("RORW unimplemented"). This patch instructions the legalizer to expand 16-bit rotations into the previous SHL, SRL, OR pattern it did previously. This fixes the 'issue-cannot-select-bswap.ll' test. Interestingly, this test failure seems flaky - it passes successfully on the avr-build-01 buildbot, but fails locally on my Arch Linux install. llvm-svn: 362773
This commit is contained in:
parent
551de49ad0
commit
6484b770e8
@ -89,9 +89,9 @@ AVRTargetLowering::AVRTargetLowering(const AVRTargetMachine &TM,
|
||||
setOperationAction(ISD::SRL_PARTS, MVT::i16, Expand);
|
||||
|
||||
setOperationAction(ISD::ROTL, MVT::i8, Custom);
|
||||
setOperationAction(ISD::ROTL, MVT::i16, Custom);
|
||||
setOperationAction(ISD::ROTL, MVT::i16, Expand);
|
||||
setOperationAction(ISD::ROTR, MVT::i8, Custom);
|
||||
setOperationAction(ISD::ROTR, MVT::i16, Custom);
|
||||
setOperationAction(ISD::ROTR, MVT::i16, Expand);
|
||||
|
||||
setOperationAction(ISD::BR_CC, MVT::i8, Custom);
|
||||
setOperationAction(ISD::BR_CC, MVT::i16, Custom);
|
||||
|
Loading…
Reference in New Issue
Block a user