You copied the Doc URL to your clipboard.

PRFM (literal)

Prefetch Memory (literal) signals the memory system that data memory accesses from a specified address are likely to occur in the near future. The memory system can respond by taking actions that are expected to speed up the memory accesses when they do occur, such as preloading the cache line containing the specified address into one or more caches.

The effect of an PRFM instruction is implementation defined. For more information, see Prefetch memory.




PRFM (<prfop>|#<imm5>), <label>

integer t = UInt(Rt);
bits(64) offset;

offset = SignExtend(imm19:'00', 64);

Assembler Symbols


Is the prefetch operation, defined as <type><target><policy>.

<type> is one of:

Prefetch for load, encoded in the "Rt<4:3>" field as 0b00.
Preload instructions, encoded in the "Rt<4:3>" field as 0b01.
Prefetch for store, encoded in the "Rt<4:3>" field as 0b10.

<target> is one of:

Level 1 cache, encoded in the "Rt<2:1>" field as 0b00.
Level 2 cache, encoded in the "Rt<2:1>" field as 0b01.
Level 3 cache, encoded in the "Rt<2:1>" field as 0b10.

<policy> is one of:

Retained or temporal prefetch, allocated in the cache normally. Encoded in the "Rt<0>" field as 0.
Streaming or non-temporal prefetch, for data that is used only once. Encoded in the "Rt<0>" field as 1.

For more information on these prefetch operations, see Prefetch memory.

For other encodings of the "Rt" field, use <imm5>.


Is the prefetch operation encoding as an immediate, in the range 0 to 31, encoded in the "Rt" field.

This syntax is only for encodings that are not accessible using <prfop>.


Is the program label from which the data is to be loaded. Its offset from the address of this instruction, in the range +/-1MB, is encoded as "imm19" times 4.


bits(64) address = PC[] + offset;

if HaveMTEExt() then

Prefetch(address, t<4:0>);