diff options
| author | Anton Korobeynikov <asl@math.spbu.ru> | 2009-05-17 10:16:28 +0000 |
|---|---|---|
| committer | Anton Korobeynikov <asl@math.spbu.ru> | 2009-05-17 10:16:28 +0000 |
| commit | 6de08cd09349cbf3d7f15c04fe67d1a800598f02 (patch) | |
| tree | df82fac332d09df46b1bace607109faf4deb380b | |
| parent | 6b5523aec2625a16aa0a82936e1671e394366c38 (diff) | |
| download | bcm5719-llvm-6de08cd09349cbf3d7f15c04fe67d1a800598f02.tar.gz bcm5719-llvm-6de08cd09349cbf3d7f15c04fe67d1a800598f02.zip | |
Mark rotl/rotr as expand. This generates pretty ugly code, but this is better than nothing.
llvm-svn: 71976
| -rw-r--r-- | llvm/lib/Target/MSP430/MSP430ISelLowering.cpp | 4 | ||||
| -rw-r--r-- | llvm/test/CodeGen/MSP430/2009-05-17-Rot.ll | 17 |
2 files changed, 21 insertions, 0 deletions
diff --git a/llvm/lib/Target/MSP430/MSP430ISelLowering.cpp b/llvm/lib/Target/MSP430/MSP430ISelLowering.cpp index 387cebffc0b..14db20e5fcd 100644 --- a/llvm/lib/Target/MSP430/MSP430ISelLowering.cpp +++ b/llvm/lib/Target/MSP430/MSP430ISelLowering.cpp @@ -73,6 +73,10 @@ MSP430TargetLowering::MSP430TargetLowering(MSP430TargetMachine &tm) : setOperationAction(ISD::SRA, MVT::i16, Custom); setOperationAction(ISD::SHL, MVT::i16, Custom); setOperationAction(ISD::SRL, MVT::i16, Custom); + setOperationAction(ISD::ROTL, MVT::i8, Expand); + setOperationAction(ISD::ROTR, MVT::i8, Expand); + setOperationAction(ISD::ROTL, MVT::i16, Expand); + setOperationAction(ISD::ROTR, MVT::i16, Expand); setOperationAction(ISD::RET, MVT::Other, Custom); setOperationAction(ISD::GlobalAddress, MVT::i16, Custom); setOperationAction(ISD::ExternalSymbol, MVT::i16, Custom); diff --git a/llvm/test/CodeGen/MSP430/2009-05-17-Rot.ll b/llvm/test/CodeGen/MSP430/2009-05-17-Rot.ll new file mode 100644 index 00000000000..c25a906308a --- /dev/null +++ b/llvm/test/CodeGen/MSP430/2009-05-17-Rot.ll @@ -0,0 +1,17 @@ +; RUN: llvm-as < %s | llc -march=msp430 + +define i16 @rol1u16(i16 %x.arg) nounwind { + %retval = alloca i16 + %x = alloca i16 + store i16 %x.arg, i16* %x + %1 = load i16* %x + %2 = shl i16 %1, 1 + %3 = load i16* %x + %4 = lshr i16 %3, 15 + %5 = or i16 %2, %4 + store i16 %5, i16* %retval + br label %return +return: + %6 = load i16* %retval + ret i16 %6 +}
\ No newline at end of file |

