diff --git a/src/runner.c b/src/runner.c
index 1f59b945e252c74055e728abe2693d46c2a4c44c..e1956ebe9a8125c95e1109dfa9ee0211fbecdea4 100644
--- a/src/runner.c
+++ b/src/runner.c
@@ -531,17 +531,9 @@ void runner_doghost(struct runner *r, struct cell *c) {
     redo = 0;
 
     /* Loop over the parts in this cell. */
-    __builtin_prefetch(&parts[pid[0]], 0, 1);
-    __builtin_prefetch(&parts[pid[0]].rho_dh, 0, 1);
-    __builtin_prefetch(&parts[pid[1]], 0, 1);
-    __builtin_prefetch(&parts[pid[1]].rho_dh, 0, 1);
-    __builtin_prefetch(&parts[pid[2]], 0, 1);
-    __builtin_prefetch(&parts[pid[2]].rho_dh, 0, 1);
     for (i = 0; i < count; i++) {
 
       /* Get a direct pointer on the part. */
-      __builtin_prefetch(&parts[pid[i + 3]], 0, 1);
-      __builtin_prefetch(&parts[pid[i + 3]].rho_dh, 0, 1);
       p = &parts[pid[i]];
 
       /* Is this part within the timestep? */
@@ -723,21 +715,9 @@ void runner_dokick2(struct runner *r, struct cell *c) {
   hdt = dt / 2;
 
   /* Loop over the particles and kick them. */
-  __builtin_prefetch(&parts[0], 0, 1);
-  __builtin_prefetch(&parts[0].rho_dh, 0, 1);
-  __builtin_prefetch(&xparts[0], 0, 1);
-  __builtin_prefetch(&parts[1], 0, 1);
-  __builtin_prefetch(&parts[1].rho_dh, 0, 1);
-  __builtin_prefetch(&xparts[1], 0, 1);
-  __builtin_prefetch(&parts[2], 0, 1);
-  __builtin_prefetch(&parts[2].rho_dh, 0, 1);
-  __builtin_prefetch(&xparts[2], 0, 1);
   for (k = 0; k < nr_parts; k++) {
 
     /* Get a handle on the part. */
-    __builtin_prefetch(&parts[k + 3], 0, 1);
-    __builtin_prefetch(&parts[k + 3].rho_dh, 0, 1);
-    __builtin_prefetch(&xparts[k + 3], 0, 1);
     p = &parts[k];
     xp = &xparts[k];
 
@@ -865,21 +845,9 @@ void runner_dokick1(struct runner *r, struct cell *c) {
     dx_max = 0.0f;
 
     /* Loop over parts. */
-    __builtin_prefetch(&parts[0], 0, 1);
-    __builtin_prefetch(&parts[0].rho_dh, 0, 1);
-    __builtin_prefetch(&xparts[0], 0, 1);
-    __builtin_prefetch(&parts[1], 0, 1);
-    __builtin_prefetch(&parts[1].rho_dh, 0, 1);
-    __builtin_prefetch(&xparts[1], 0, 1);
-    __builtin_prefetch(&parts[2], 0, 1);
-    __builtin_prefetch(&parts[2].rho_dh, 0, 1);
-    __builtin_prefetch(&xparts[2], 0, 1);
     for (k = 0; k < c->count; k++) {
 
       /* Get a handle on the kth particle. */
-      __builtin_prefetch(&parts[k + 3], 0, 1);
-      __builtin_prefetch(&parts[k + 3].rho_dh, 0, 1);
-      __builtin_prefetch(&xparts[k + 3], 0, 1);
       p = &parts[k];
       xp = &xparts[k];
 
@@ -1025,21 +993,9 @@ void runner_dokick(struct runner *r, struct cell *c, int timer) {
     dx_max = 0.0f;
 
     /* Loop over the particles and kick them. */
-    __builtin_prefetch(&parts[0], 0, 1);
-    __builtin_prefetch(&parts[0].rho_dh, 0, 1);
-    __builtin_prefetch(&xparts[0], 0, 1);
-    __builtin_prefetch(&parts[1], 0, 1);
-    __builtin_prefetch(&parts[1].rho_dh, 0, 1);
-    __builtin_prefetch(&xparts[1], 0, 1);
-    __builtin_prefetch(&parts[2], 0, 1);
-    __builtin_prefetch(&parts[2].rho_dh, 0, 1);
-    __builtin_prefetch(&xparts[2], 0, 1);
     for (k = 0; k < nr_parts; k++) {
 
       /* Get a handle on the part. */
-      __builtin_prefetch(&parts[k + 3], 0, 1);
-      __builtin_prefetch(&parts[k + 3].rho_dh, 0, 1);
-      __builtin_prefetch(&xparts[k + 3], 0, 1);
       p = &parts[k];
       xp = &xparts[k];
 
@@ -1265,16 +1221,6 @@ void *runner_main(void *data) {
       /* else
           super = NULL; */
 
-      /* Prefetch? */
-      if (runner_prefetch && t->type != task_type_kick1 &&
-          t->type != task_type_kick2 && t->type != task_type_ghost) {
-        for (int k = 0; k < ci->count; k++)
-          __builtin_prefetch(&ci->parts[k], 1, 3);
-        if (cj != NULL)
-          for (int k = 0; k < cj->count; k++)
-            __builtin_prefetch(&cj->parts[k], 1, 3);
-      }
-
       /* Different types of tasks... */
       switch (t->type) {
         case task_type_self: