二歩のチェック
SSEだと遅くなったので書き直し。
歩のビットボードと、縦1列がONになったビットボードをANDして、0以外ならその列には打てない(既に歩がある列である)。
縦1列のビットボードは定数なんだけど SSEを使うとメモリアクセスになるので、最初の1つ以外はシフトで作った方が速いと思う[要確認]。sakurapyonのビットボードは32bits*3なので _mm_slli_epi32が使える。
BitBoard b=歩が打てそうな場所; BitBoard bf=bb_file0; if(!((b_pawn&bf).isZero())) b-=bf; for(auto i=0;i<8;i++){ bf.mm=_mm_slli_epi32(bf.mm,1); if(!((b_pawn&bf).isZero())) b-=bf; } // bに歩が打てる場所が入っている