__builtin_prefetch, Quanto ele lê?

Estou tentando otimizar alguns C ++ RK4) usando

__builtin_prefetch

Não consigo descobrir como pré-buscar uma estrutura inteir

Eu não entendo quanto doconst void *addr está lido. Eu quero ter os próximos valores defrom eto carregado.

for (int i = from; i < to; i++)
{
    double kv = myLinks[i].kv;
    particle* from = con[i].Pfrom;
    particle* to = con[i].Pto;
    //Prefetch values at con[i++].Pfrom & con[i].Pto;
    double pos = to->px- from->px;
    double delta = from->r + to->r - pos;
    double k1 = axcel(kv, delta, from->mass) * dt; //axcel is an inlined function
    double k2 = axcel(kv, delta + 0.5 * k1, from->mass) * dt;
    double k3 = axcel(kv, delta + 0.5 * k2, from->mass) * dt;
    double k4 = axcel(kv, delta + k3, from->mass) * dt;
    #define likely(x)       __builtin_expect((x),1)
    if (likely(!from->bc))
    {
            from->x += (( k1 + 2 * k2 + 2 * k3 + k4) / 6);
    }
}

Ligação:http: //www.ibm.com/developerworks/linux/library/l-gcc-hacks

questionAnswers(2)

yourAnswerToTheQuestion