summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorAnton Korobeynikov <asl@math.spbu.ru>2010-02-21 12:28:58 +0000
committerAnton Korobeynikov <asl@math.spbu.ru>2010-02-21 12:28:58 +0000
commite96503faa12ad7cc05d6b9b12d34e0d3fdbaeb8b (patch)
treebd2b3237568b7513691dd547d7d03603f3737ec1 /llvm/lib
parent8f2548112e355118b3d53d06332da80aaf423389 (diff)
downloadbcm5719-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')
-rw-r--r--llvm/lib/Target/MSP430/MSP430ISelLowering.cpp13
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();
OpenPOWER on IntegriCloud