2019年1月12日土曜日

Intel の嫌がらせ

Intel 謹製の高速正規表現ライブラリであるところの hyperscan を使ってみようと思った.
ここ見ながら build してサンプル作って実行してみたら,

「ハンドルされない例外が 0x00007FF6BF7B5E4C (sample.exe) で発生しました: 0xC000001D: Illegal Instruction。」

オウフ.なかなか見ないエラーだな.

エラー起こしたアドレスの逆アセをみると「shlx」,これはどうやら BMI2 命令セット (AVX2 と同時に追加?) に含まれる命令っぽいのだが,うちの AMD A8 に載ってるわけがない.cmake が AVX2 の有無を認識してコンパイラオプション等をよきにはからってくれると思ってるんだけど,違うのだろうか? Intel CPU にしか hyperscan を使わせない嫌がらせか何か?

んーと思ったら,CMakeLists.txt で AVX2 を強制的に ON にしてるっぽい?
set(ARCH_C_FLAGS "/arch:AVX2")
set(ARCH_CXX_FLAGS "/arch:AVX2")
これをコメントアウトしたら,無事 AMD A8 でも動いたヽ(´ー`)ノ

0 件のコメント:

コメントを投稿