[llvm-commits] [llvm] r139639 - in /llvm/trunk: lib/Target/ARM/ARMInstrThumb2.td lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp test/MC/Disassembler/ARM/thumb2.txt

Eli Friedman eli.friedman at gmail.com
Tue Sep 13 14:02:56 PDT 2011


On Tue, Sep 13, 2011 at 1:46 PM, Owen Anderson <resistor at mac.com> wrote:
> Author: resistor
> Date: Tue Sep 13 15:46:26 2011
> New Revision: 139639
>
> URL: http://llvm.org/viewvc/llvm-project?rev=139639&view=rev
> Log:
> Correct disassembly printing of Thumb2 post-incremented LDRD and STRD.
>
> Modified:
>    llvm/trunk/lib/Target/ARM/ARMInstrThumb2.td
>    llvm/trunk/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp
>    llvm/trunk/test/MC/Disassembler/ARM/thumb2.txt
>
> Modified: llvm/trunk/lib/Target/ARM/ARMInstrThumb2.td
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMInstrThumb2.td?rev=139639&r1=139638&r2=139639&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/ARMInstrThumb2.td (original)
> +++ llvm/trunk/lib/Target/ARM/ARMInstrThumb2.td Tue Sep 13 15:46:26 2011
> @@ -1441,7 +1441,7 @@
>
>  def t2LDRD_POST : T2Ii8s4post<0, 1, 1, (outs rGPR:$Rt, rGPR:$Rt2, GPR:$wb),
>                  (ins addr_offset_none:$addr, t2am_imm8s4_offset:$imm),
> -                 IIC_iLoad_d_ru, "ldrd", "\t$Rt, $Rt2, $addr, $imm",
> +                 IIC_iLoad_d_ru, "ldrd", "\t$Rt, $Rt2, $addr$imm",
>                  "$addr.base = $wb", []>;
>
>  def t2STRD_PRE  : T2Ii8s4<1, 1, 0, (outs GPR:$wb),
> @@ -1455,7 +1455,7 @@
>  def t2STRD_POST : T2Ii8s4post<0, 1, 0, (outs GPR:$wb),
>                  (ins rGPR:$Rt, rGPR:$Rt2, addr_offset_none:$addr,
>                       t2am_imm8s4_offset:$imm),
> -                 IIC_iStore_d_ru, "strd", "\t$Rt, $Rt2, $addr, $imm",
> +                 IIC_iStore_d_ru, "strd", "\t$Rt, $Rt2, $addr$imm",
>                  "$addr.base = $wb", []>;
>
>  // T2Ipl (Preload Data/Instruction) signals the memory system of possible future
>
> Modified: llvm/trunk/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp?rev=139639&r1=139638&r2=139639&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp (original)
> +++ llvm/trunk/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp Tue Sep 13 15:46:26 2011
> @@ -842,10 +842,13 @@
>   const MCOperand &MO1 = MI->getOperand(OpNum);
>   int32_t OffImm = (int32_t)MO1.getImm() / 4;
>   // Don't print +0.
> -  if (OffImm < 0)
> -    O << "#-" << -OffImm * 4;
> -  else if (OffImm > 0)
> -    O << "#" << OffImm * 4;
> +  if (OffImm != 0) {
> +    O << ", ";
> +    if (OffImm < 0)
> +      O << "#-" << -OffImm * 4;
> +    else if (OffImm > 0)
> +      O << "#" << OffImm * 4;
> +  }
>  }
>
>  void ARMInstPrinter::printT2AddrModeSoRegOperand(const MCInst *MI,
>
> Modified: llvm/trunk/test/MC/Disassembler/ARM/thumb2.txt
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Disassembler/ARM/thumb2.txt?rev=139639&r1=139638&r2=139639&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/Disassembler/ARM/thumb2.txt (original)
> +++ llvm/trunk/test/MC/Disassembler/ARM/thumb2.txt Tue Sep 13 15:46:26 2011
> @@ -945,3 +945,14 @@
>  0xf5 0x1b
>  0x11 0x1d
>
> +#------------------------------------------------------------------------------
> +# STRD (immediate)
> +#------------------------------------------------------------------------------
> +# CHECK: strd r6, r3, [r5], #-8
> +# CHECK-NOT: strd r8, r5, [r5],
> +# CHECK: strd r7, r4, [r5], #-4
> +
> +0x65 0xe8 0x02 0x63
> +0x65 0xe8 0x00 0x85
> +0x65 0xe8 0x01 0x74
> +

Random FIleCheck trick:

# CHECK: strd r6, r3, [r5], #-8
# CHECK: strd r8, r5, [r5]{{$}}
# CHECK: strd r7, r4, [r5], #-4

-Eli




More information about the llvm-commits mailing list