1 @Benchmark 2 public Object gatherBase0() { 3 $type$[] as = fa.apply(size); 4 int[] is = fs.apply(size); 5 $type$[] rs = fr.apply(size); 6 7 for (int i = 0; i < as.length; i++) { 8 int ix = 0 + is[i]; 9 rs[i] = as[ix]; 10 } 11 12 return rs; 13 } 14 15 16 Object gather(int window) { 17 $type$[] as = fa.apply(size); 18 int[] is = fs.apply(size); 19 $type$[] rs = fr.apply(size); 20 21 for (int i = 0; i < as.length; i += window) { 22 for (int j = 0; j < window; j++) { 23 int ix = i + is[i + j]; 24 rs[i + j] = as[ix]; 25 } 26 } 27 28 return rs; 29 } 30 31 @Benchmark 32 public Object gather064() { 33 int window = 64 / $Wideboxtype$.SIZE; 34 return gather(window); 35 } 36 37 @Benchmark 38 public Object gather128() { 39 int window = 128 / $Wideboxtype$.SIZE; 40 return gather(window); 41 } 42 43 @Benchmark 44 public Object gather256() { 45 int window = 256 / $Wideboxtype$.SIZE; 46 return gather(window); 47 } 48 49 @Benchmark 50 public Object gather512() { 51 int window = 512 / $Wideboxtype$.SIZE; 52 return gather(window); 53 }