x86intrin
勉強がてらにLDCでx86intrinsicっぽくSIMDを書けるライブラリを書いてみている。まだまだ全然途中なので使わないでください。
_m128iとかじゃなくてそのままbyte16とかを直接 _mm_XXX
の引数にとったりするようにしてるけど、将来的にはたぶん変えます。
そういう作業をしてる中でいくつか問題にあたったので、書き残しておきます。
LDCでunittestブロックとDFLAGSの指定を共存できない
そういう問題があるので dub test --compiler
だと DFLAGS="-mattr=+sse4.2
つけてもsse4.2環境のテストができない。別にスクリプトを作ってそっちを実行するようにして回避。
intrinsicがundefined reference
clangやrustと同じバージョンのLLVMを使っているけどLDCだけundefined referenceといわれるintrinsicがあったりする。cvt系とか全部死亡です、ありがとうございました。
Comment out convert intrinsics since undefined reference error · kubo39/x86intrin@4c831f9 · GitHub
普通の関数がundefined reference
sse2でintrinsic使ってない関数を呼び出そうとしたらundefined referenceで無事死亡。