1
2の合計を持つ関数を作成しようとしていますCGVectors
。C/Objective CでSSE命令セットを使用するには?
これは私の試みです:
に含まれるもの:
@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を持つことが期待しましたか?
しかし、全体的なアイデアは、SSE2 – ColdSteel
でそれをすることですあなたはobj-以内にこれをしようとしているかどうかは不明ですcファイルまたはc。たぶん、その情報とインクルード、インクルードも含まれています。言い換えれば、残りのコードです。 :) –
編集されました:ファイルは.mですが、Cの関数のみが含まれています – ColdSteel