diff --git a/llvm/lib/Target/ARM/ARMInstrThumb2.td b/llvm/lib/Target/ARM/ARMInstrThumb2.td index f014e02de2c4..fdbf5ae7332a 100644 --- a/llvm/lib/Target/ARM/ARMInstrThumb2.td +++ b/llvm/lib/Target/ARM/ARMInstrThumb2.td @@ -4428,7 +4428,12 @@ def : t2InstAlias<"ldrsh${p}.w $Rt, $addr", def : t2InstAlias<"add${p} $Rd, pc, $imm", (t2ADR rGPR:$Rd, imm0_4095:$imm, pred:$p)>; -// PLI with alternate literal form. +// PLD/PLDW/PLI with alternate literal form. +def : t2InstAlias<"pld${p} $addr", + (t2PLDpci t2ldr_pcrel_imm12:$addr, pred:$p)>; +def : InstAlias<"pldw${p} $addr", + (t2PLDWpci t2ldr_pcrel_imm12:$addr, pred:$p)>, + Requires<[IsThumb2,HasV7,HasMP]>; def : InstAlias<"pli${p} $addr", (t2PLIpci t2ldr_pcrel_imm12:$addr, pred:$p)>, Requires<[IsThumb2,HasV7]>; diff --git a/llvm/test/MC/ARM/basic-thumb2-instructions.s b/llvm/test/MC/ARM/basic-thumb2-instructions.s index 50a505e1d3c1..2bd9a133384f 100644 --- a/llvm/test/MC/ARM/basic-thumb2-instructions.s +++ b/llvm/test/MC/ARM/basic-thumb2-instructions.s @@ -1573,6 +1573,9 @@ _func: @ FIXME: pld _foo @ encoding: [0x9f'A',0xf8'A',A,0xf0'A'] @ fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12 + pld [pc,#-4095] +@ CHECK: pld [pc, #-4095] @ encoding: [0x1f,0xf8,0xff,0xff] + @------------------------------------------------------------------------------ @ PLD(register) diff --git a/llvm/test/MC/ARM/thumb2-pldw.s b/llvm/test/MC/ARM/thumb2-pldw.s new file mode 100644 index 000000000000..7acbd39cbd36 --- /dev/null +++ b/llvm/test/MC/ARM/thumb2-pldw.s @@ -0,0 +1,7 @@ +@ RUN: llvm-mc -triple=thumbv7-apple-darwin -mcpu=cortex-a8 -mattr=+mp -show-encoding < %s | FileCheck %s + +@------------------------------------------------------------------------------ +@ PLD(literal) +@------------------------------------------------------------------------------ + pldw [pc,#-4095] +@ CHECK: pldw [pc, #-4095] @ encoding: [0x3f,0xf8,0xff,0xff]