最初の方法のベクトル化

昨日の謎の表は56行と余り8ワードあるので、56行を4分割してベクトル化する

ベクトルの最初のワードに、最初の14行を割り当てる

  //    0:  509-282- 55-452-225-622-395-168-565-338-111
  //    1:  508-281- 54-451-224-621-394-167-564-337-110
  //    2:  507-280- 53-450-223-620-393-166-563-336-109
  //   ...
  //   11:  498-271- 44-441-214-611-384-157-554-327-100
  //   12:  497-270- 43-440-213-610-383-156-553-326- 99
  //   13:  496-269- 42-439-212-609-382-155-552-325- 98

次のワードには、次の14行

  //   14:  495-268- 41-438-211-608-381-154-551-324- 97
  //   15:  494-267- 40-437-210-607-380-153-550-323- 96
  //   16:  493-266- 39-436-209-606-379-152-549-322- 95
  //   ...
  //   25:  484-257- 30-427-200-597-370-143-540-313- 86
  //   26:  483-256- 29-426-199-596-369-142-539-312- 85
  //   27:  482-255- 28-425-198-595-368-141-538-311- 84

というように分けると、こんな感じにベクトルにおさまる

vector x_509 = {mt[509],mt[495],mt[481],mt[467]};
vector x_508 = {mt[508],mt[494],mt[480],mt[466]};
vector x_281 = {mt[281],mt[267],mt[253],mt[239]};

で、シャッフルとかしなくても正しい場所に計算相手がはいってるから

y = spu_selb(x_509, x_508, mask);

みたいにロードしたらすぐ取り掛かれるわけだ。