new_val = new_dist[i];
+ // TODO: Why do we need this next barrier? It makes no sense.
+ memoryBarrierShared();
+ barrier();
+
for (uint layer = 2; layer <= 256; layer *= 2) {
if ((i & (layer - 1)) == layer - 1) {
new_dist[i] += new_dist[i - (layer / 2)];