gpt4 book ai didi

objective-c - 如何在 C/Objective C 中使用 SSE 指令集?

转载 作者:太空宇宙 更新时间:2023-11-04 04:27:47 24 4
gpt4 key购买 nike

我正在尝试制作一个对 2 个 CGVectors 求和的函数。

这是我的尝试:

包括:

@import GLKit;
@import Foundations;


// Defenition of CGVector
struct CGVector {
CGFloat dx;
CGFloat dy;
};

typedef struct CGVector CGVector;

inline CGVector CGVECADD(CGVector v1 , CGVector v2){
#ifdef GLK_SSE3_INTRINSICS
__m128d v;
v = _mm_add_sd(*(__m128d *)&v1, *(__m128d *)&v2);

return *(CGVector *)& v;
#else
return CGVectorMake(v1.dx + v2.dx, v1.dy + v2.dy);
#endif
}

然后我试着像这样使用它

    CGVector v1, v2 , v3;
v1 = CGVectorMake(2, 3);
v2 = CGVectorMake(4, 4);;
v3 = CGVECADD(v1, v2); //(6, 7) expected
NSLog(@"V3 = (%lf, %lf)", v3.dx , v3.dy);

没有编译器错误但是我从日志中得到的是

V3 = (6.000000, 3.000000)

我希望有 6,7 :-)

我做错了什么?

最佳答案

你应该能够做到:

CGVector v1, v2, v3;
v1 = CGVectorMake(2, 3);
v2 = CGVectorMake(4, 4);
v3 = CGVectorMake(v1.dx + v2.dx, v1.dy + v2.dy);
NSLog(@"V3 = (%f, %f)", v3.dx, v3.dy);

输出:

V3 = (6.000000, 7.000000)

关于objective-c - 如何在 C/Objective C 中使用 SSE 指令集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39811507/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com