我猜不,但我想从社区来到这里,因为我对这些东西没有真正的经验。是否可以使用 DMD 与 /etc/lib/libc.a (我在 Linux x64 上)链接?
我的原因是,我正在尝试让硬件 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
编译时。有任何想法吗?