16#ifndef CXXUTILS_PREFETCH_H
17#define CXXUTILS_PREFETCH_H
27#ifndef CXXUTILS_PREFETCH_ADDRESS
30# define CXXUTILS_PREFETCH_ADDRESS(ADDR) __builtin_prefetch(ADDR)
32# define CXXUTILS_PREFETCH_ADDRESS(ADDR) do {} while(0)
87 const char* pp =
reinterpret_cast<const char*
> (ptr);
128template <
typename Iter>
132 if (++iter != endIter)
152template <
typename Iter>
156 if (iter != endIter) {
158 if (++iter != endIter) {
void prefetchNext(Iter iter, Iter endIter)
Prefetch next object in sequence.
void prefetchN(const void *ptr)
Prefetch an N-byte block of memory.
void prefetchOne(const void *address)
Generic prefetch method.
void prefetchTwo(Iter iter, Iter endIter)
Prefetch two objects.
void prefetchObj(const T *ptr)
Generic prefetch of the object of specific types (sizes).
#define CXXUTILS_PREFETCH_ADDRESS(ADDR)