even*1+odd*3

(y >> 1) ^ mag01[y & 1]

をeven*1+odd*3でやる話。XORはevenでやらないといけないから右シフトは当然qword右シフトになる。
mag01[y & 1] は gb してテーブルルックアップすることにすると

z = si_lqx(spu_slqw(spu_gather(y), 4), mag_lut);
r = spu_xor(spu_rlmaskqw(y,-1), z);

qword右シフトだと上からよけいなビットが降ってくるけど、
gatherした4ビットの中に同じビットがあるからmag_lutを工夫すれば打ち消せる。

これで、even*1+odd*4になったんだけど、これからoddを一命令減らすとか無理っぽいけど
続きは次回。