diff options
| author | Bradley Smith <bradley.smith@arm.com> | 2014-04-09 14:44:03 +0000 |
|---|---|---|
| committer | Bradley Smith <bradley.smith@arm.com> | 2014-04-09 14:44:03 +0000 |
| commit | a0dce246eddc3c0818636f5177beca2943bb3d22 (patch) | |
| tree | a4792eadc9a3fb6586af62fe63eaeaee273d5972 /llvm/lib | |
| parent | 3971d3dc75f80b972863c5a336ca28ffce5c24eb (diff) | |
| download | bcm5719-llvm-a0dce246eddc3c0818636f5177beca2943bb3d22.tar.gz bcm5719-llvm-a0dce246eddc3c0818636f5177beca2943bb3d22.zip | |
[ARM64] Tighten up the special casing in emitting arithmetic extends. UXTW should only be translated when the instruction uses WSP, not SP. Vice versa for UXTX and 64-bit instructions.
llvm-svn: 205886
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/ARM64/InstPrinter/ARM64InstPrinter.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/Target/ARM64/InstPrinter/ARM64InstPrinter.cpp b/llvm/lib/Target/ARM64/InstPrinter/ARM64InstPrinter.cpp index d17182da761..7d1dd50b720 100644 --- a/llvm/lib/Target/ARM64/InstPrinter/ARM64InstPrinter.cpp +++ b/llvm/lib/Target/ARM64/InstPrinter/ARM64InstPrinter.cpp @@ -1097,8 +1097,10 @@ void ARM64InstPrinter::printExtend(const MCInst *MI, unsigned OpNum, if (ExtType == ARM64_AM::UXTW || ExtType == ARM64_AM::UXTX) { unsigned Dest = MI->getOperand(0).getReg(); unsigned Src1 = MI->getOperand(1).getReg(); - if (Dest == ARM64::SP || Dest == ARM64::WSP || Src1 == ARM64::SP || - Src1 == ARM64::WSP) { + if ( ((Dest == ARM64::SP || Src1 == ARM64::SP) && + ExtType == ARM64_AM::UXTX) || + ((Dest == ARM64::WSP || Src1 == ARM64::WSP) && + ExtType == ARM64_AM::UXTW) ) { if (ShiftVal != 0) O << ", lsl #" << ShiftVal; return; |

