15.3から引数トータルで16バイト超えるインライン関数で、条件わからんが正しくコードが生成されないバグがある。
デバッグビルド発生しやすいけど頑張ればリリースでも起きる。
Intrinsicsでコード書いてると遭遇するパターンなんで、他にも発狂者いるかな。
↓これそのまんまだけのコードではバグは起きない(他になにか条件がある)。 _mm256_setr_epi8使って直に設定すると問題は起きない。__m512iでも同様の問題あり。

__inline auto SET_BYTE(uint8_t b0, uint8_t b1, uint8_t b2, uint8_t b3, uint8_t b4, uint8_t b5, uint8_t b6, uint8_t b7,
uint8_t b8, uint8_t b9, uint8_t b10, uint8_t b11, uint8_t b12, uint8_t b13, uint8_t b14, uint8_t b15)
{
return _mm256_setr_epi8(b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15);
}

const auto SHFL_SWAP_RB = SET_BYTE(2, 1, 0, 3, 6, 5, 4, 7, 10, 9, 8, 11, 14, 13, 12, 15);


コンパイラ内部でSIMDレジスタ使って処理の高速化を目指したもののエンバグした雰囲気。