<< 60/66 >>
First Last

同時計算

 /* Tempering */
 y ^= (y >> 11);
 y ^= (y << 7) & 0x9d2c5680UL;
 y ^= (y << 15) & 0xefc60000UL;
 y ^= (y >> 18);

かなりの bit 数の計算が無駄になっている

特に 18 bit 右シフトしたら半分以上の bit は無駄な xor をしていることに

shuffle で 2 つのレジスタを合体させておけば 2 つの xor を 1 つにすることができる