10.71 PLD and PLI

Preload Data and Preload Instruction allow the processor to signal the memory system that a data or instruction load from an address is likely in the near future.

Syntax

PLtype{cond} [Rn {, #offset}]
PLtype{cond} [Rn, ±Rm {, shift}]
PLtype{cond} label
where:
type
can be one of:
D
Data address.
I
Instruction address.
cond
is an optional condition code.

Note

cond is permitted only in Thumb code, using a preceding IT instruction. This is an unconditional instruction in ARM code and you must not use cond.
Rn
is the register on which the memory address is based.
offset
is an immediate offset. If offset is omitted, the address is the value in Rn.
Rm
is a register containing a value to be used as the offset.
shift
is an optional shift.
label
is a PC-relative expression.

Range of offsets

The offset is applied to the value in Rn before the preload takes place. The result is used as the memory address for the preload. The range of offsets permitted is:
  • –4095 to +4095 for ARM instructions.
  • –255 to +4095 for Thumb instructions, when Rn is not PC.
  • –4095 to +4095 for Thumb instructions, when Rn is PC.
The assembler calculates the offset from the PC for you. The assembler generates an error if label is out of range.

Register or shifted register offset

In ARM code, the value in Rm is added to or subtracted from the value in Rn. In Thumb code, the value in Rm can only be added to the value in Rn. The result is used as the memory address for the preload.
The range of shifts permitted is:
  • LSL #0 to #3 for Thumb instructions.
  • Any one of the following for ARM instructions:
    • LSL #0 to #31.
    • LSR #1 to #32.
    • ASR #1 to #32.
    • ROR #1 to #31.
    • RRX.

Address alignment for preloads

No alignment checking is performed for preload instructions.

Register restrictions

Rm must not be PC. For Thumb instructions Rm must also not be SP.
Rn must not be PC for Thumb instructions of the syntax PLtype{cond} [Rn, ±Rm{, #shift}].

Architectures

ARM PLD is available in ARMv5TE and above.
The 32-bit Thumb encoding of PLD is available in ARMv6T2 and above.
PLI is available only in ARMv7 and above.
There are no 16-bit encodings of PLD or PLI in Thumb.
These are hint instructions, and their implementation is optional. If they are not implemented, they execute as NOPs.
Related concepts
7.5 Register-relative and PC-relative expressions
Related reference
10.8 Condition code suffixes
Non-ConfidentialPDF file icon PDF versionARM DUI0379G
Copyright © 2007, 2008, 2011, 2012, 2014, 2015 ARM. All rights reserved.