From: Chris Lattner
+ call void (sbyte *, uint, uint)* %llvm.prefetch(sbyte * <address>, + uint <rw>, + uint <locality>) ++ +
+The 'llvm.prefetch' intrinsic is a hint to the code generator to insert +a prefetch instruction if supported, otherwise it is a noop. Prefetches have no +behavior affect on the program, but can change the performance characteristics +of the code. +
+ ++address is the address to be prefetched, rw is the specifier +determining if the fetch should be for a read (0) or write (1), and +locality is a temporal locality specifier ranging from (0) - no +locality, to (3) - exteremely local keep in cache. The rw and +locality arguments must be constant integers. +
+ ++This intrinsic does not modify the behavior of the program. In particular, +prefetches cannot trap and do not produce a value. On targets that support this +intrinsic, the prefetch can provide hints to the processor cache for better +performance. +
+ +