いいえと思いますが、私はこのような経験があまりないので、コミュニティから参加したいと思います。/etc/lib/libc.a (私は Linux x64 を使用しています) と DMD をリンクすることはできますか?
私の理由は、ハードウェア SSE 組み込み関数を (単純な加算/減算などを超えて) 機能させようとしているので、次のように書けると素晴らしいでしょう:
// simdTest.d
import core.simd;
extern (C) float4 _mm_hadd_ps(float4 a, float4 b); // example
void main()
{
float4 a = [1, 2, 3, 4];
float4 b = [1, 1, 1, 1];
float4 c = _mm_hadd_ps(a, b);
}
そして次のようにコンパイルします:
dmd /usr/lib/libc.a simdTest.d
しかし、意味を理解する方法がわからないあらゆる種類のリンクエラーが発生します。繰り返しますが、これを行うのを妨げている何かがあると思いますが、そうでない場合は、どうすればよいか知りたいです。
または...
本当に必要なのは、ベクトルを機能させることだけです。上記の C 関数は core.simd に (ある程度) 存在しますが、機能させることができません (バグなのか、何か間違っているのかはわかりません)。これが私の簡単なコードです:
import core.simd;
void main()
{
void16 a, b;
void16 c = __simd(XMM.HADDPS, a, b);
}
しかし、コンパイラは私に次のことを教えてくれます:
Internal error: e2ir.c 3817
それをコンパイルするとき。何か案は?