Abstract: A pointer prefetching engine includes a scheduler, a linker, a stride engine, and a prefetch request queuer. The scheduler receives a wakeup based on a load instruction loading data to a memory address identified by a pointer, identifies a dependent instruction based on the wakeup, and validates the dependent instruction. The linker identifies a producer-consumer pair of instructions including the load instruction and the dependent instruction based on the validation of the dependent instruction, and generates a training request based on the producer-consumer pair of instructions. The stride engine determines a regular repeated stride of the producer-consumer pair of instructions based on the training request, and generates a producer prefetch request based on the regular repeated stride. The prefetch request queuer determines an address based on the pointer, modifies the address, and generates a prefetch request for the dependent instruction including the modified virtual address.