1 
   2     @Benchmark
   3     public Object scatterBase0() {
   4         $type$[] as = fa.apply(size);
   5         int[] is    = fs.apply(size);
   6         $type$[] rs = fr.apply(size);
   7 
   8         for (int i = 0; i < as.length; i++) {
   9             int ix = 0 + is[i];
  10             rs[ix] = as[i];
  11         }
  12 
  13         return rs;
  14     }
  15 
  16     Object scatter(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[ix] = as[i + j];
  25             }
  26         }
  27 
  28         return rs;
  29     }
  30 
  31     @Benchmark
  32     public Object scatter064() {
  33         int window = 64 / $Wideboxtype$.SIZE;
  34         return scatter(window);
  35     }
  36 
  37     @Benchmark
  38     public Object scatter128() {
  39         int window = 128 / $Wideboxtype$.SIZE;
  40         return scatter(window);
  41     }
  42 
  43     @Benchmark
  44     public Object scatter256() {
  45         int window = 256 / $Wideboxtype$.SIZE;
  46         return scatter(window);
  47     }
  48 
  49     @Benchmark
  50     public Object scatter512() {
  51         int window = 512 / $Wideboxtype$.SIZE;
  52         return scatter(window);
  53     }