【发布时间】:2012-08-12 10:14:11
【问题描述】:
我猜不,但我想从社区来到这里,因为我对这些东西没有真正的经验。是否可以使用 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
编译时。有什么想法吗?
【问题讨论】: