diff options
author | Anton Korobeynikov <asl@math.spbu.ru> | 2010-02-21 12:28:58 +0000 |
---|---|---|
committer | Anton Korobeynikov <asl@math.spbu.ru> | 2010-02-21 12:28:58 +0000 |
commit | e96503faa12ad7cc05d6b9b12d34e0d3fdbaeb8b (patch) | |
tree | bd2b3237568b7513691dd547d7d03603f3737ec1 /llvm/lib/Target | |
parent | 8f2548112e355118b3d53d06332da80aaf423389 (diff) | |
download | bcm5719-llvm-e96503faa12ad7cc05d6b9b12d34e0d3fdbaeb8b.tar.gz bcm5719-llvm-e96503faa12ad7cc05d6b9b12d34e0d3fdbaeb8b.zip |
IT turns out that during jumpless setcc lowering eq and ne were swapped.
This fixes PR6348
llvm-svn: 96734
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r-- | llvm/lib/Target/MSP430/MSP430ISelLowering.cpp | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/llvm/lib/Target/MSP430/MSP430ISelLowering.cpp b/llvm/lib/Target/MSP430/MSP430ISelLowering.cpp index 7281b378d12..e6c7e1ecd81 100644 --- a/llvm/lib/Target/MSP430/MSP430ISelLowering.cpp +++ b/llvm/lib/Target/MSP430/MSP430ISelLowering.cpp @@ -795,18 +795,15 @@ SDValue MSP430TargetLowering::LowerSETCC(SDValue Op, SelectionDAG &DAG) { if (andCC) { // C = ~Z, thus Res = SRW & 1, no processing is required } else { - // Res = (SRW >> 1) & 1 + // Res = ~((SRW >> 1) & 1) Shift = true; + Invert = true; } break; case MSP430CC::COND_E: - if (andCC) { - // C = ~Z, thus Res = ~(SRW & 1) - } else { - // Res = ~((SRW >> 1) & 1) - Shift = true; - } - Invert = true; + Shift = true; + // C = ~Z for AND instruction, thus we can put Res = ~(SRW & 1), however, + // Res = (SRW >> 1) & 1 is 1 word shorter. break; } EVT VT = Op.getValueType(); |