ちょっと AVX512 向けに intrinsic で最適化を試している(以前書いた話とは別)のですが、ふと出力されたバイナリの逆アセンブリを見てみたら zmm16 以降が使われていないことに気が付きました。

ちょっと試行錯誤したら理由はすぐ分かって、 /arch:AVX512 オプションを付けていなかったからでした。 VC++ は GCC などとは違ってこういったオプションを付けなくても intrinsic で SIMD 命令を使うことができてしまうのですが、オプションを付けてない場合は zmm16 以降を使わないバイナリを出力するようです。なんでそんな中途半端な状態になるのよ。

Trackback

no comment untill now

Add your comment now