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     }