diff options
author | Owen Anderson <resistor@mac.com> | 2011-08-26 20:43:14 +0000 |
---|---|---|
committer | Owen Anderson <resistor@mac.com> | 2011-08-26 20:43:14 +0000 |
commit | 16d33f36d5e86d8927b395265f02469fd5f169de (patch) | |
tree | b3a19256416884aea8a356f48a9f0a13d0fa6acf /llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp | |
parent | 28dc5abd0507f9e76b5fc831646f4dbdb0b4fd4d (diff) | |
download | bcm5719-llvm-16d33f36d5e86d8927b395265f02469fd5f169de.tar.gz bcm5719-llvm-16d33f36d5e86d8927b395265f02469fd5f169de.zip |
invalid-LDR_PRE-arm.txt was already passing, but for the wrong reasons. We were failing to specify enough fixed bits of LDR_PRE/LDRB_PRE, resulting in decoding conflicts. Separate them into immediate vs. register versions, allowing us to specify the necessary fixed bits. This in turn results in the test being decoded properly, and being rejected as UNPREDICTABLE rather than a hard failure.
llvm-svn: 138653
Diffstat (limited to 'llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp')
-rw-r--r-- | llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp b/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp index 7e4450fced2..5e60cc42c39 100644 --- a/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp +++ b/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp @@ -1321,11 +1321,11 @@ SDNode *ARMDAGToDAGISel::SelectARMIndexedLoad(SDNode *N) { bool Match = false; if (LoadedVT == MVT::i32 && SelectAddrMode2OffsetImm(N, LD->getOffset(), Offset, AMOpc)) { - Opcode = isPre ? ARM::LDR_PRE : ARM::LDR_POST_IMM; + Opcode = isPre ? ARM::LDR_PRE_IMM : ARM::LDR_POST_IMM; Match = true; } else if (LoadedVT == MVT::i32 && SelectAddrMode2OffsetReg(N, LD->getOffset(), Offset, AMOpc)) { - Opcode = isPre ? ARM::LDR_PRE : ARM::LDR_POST_REG; + Opcode = isPre ? ARM::LDR_PRE_REG : ARM::LDR_POST_REG; Match = true; } else if (LoadedVT == MVT::i16 && @@ -1343,10 +1343,10 @@ SDNode *ARMDAGToDAGISel::SelectARMIndexedLoad(SDNode *N) { } else { if (SelectAddrMode2OffsetImm(N, LD->getOffset(), Offset, AMOpc)) { Match = true; - Opcode = isPre ? ARM::LDRB_PRE : ARM::LDRB_POST_IMM; + Opcode = isPre ? ARM::LDRB_PRE_IMM : ARM::LDRB_POST_IMM; } else if (SelectAddrMode2OffsetReg(N, LD->getOffset(), Offset, AMOpc)) { Match = true; - Opcode = isPre ? ARM::LDRB_PRE : ARM::LDRB_POST_REG; + Opcode = isPre ? ARM::LDRB_PRE_REG : ARM::LDRB_POST_REG; } } } |