_mm_store_ps
,_mm_add_ps
などの__関数を克服する簡単な同等のCコードは何ですか?等価なCコードを使用して関数を指定してください。_mm_タイプ関数の等価Cコード
なぜこれらの機能が使用されていますか?
_mm_store_ps
,_mm_add_ps
などの__関数を克服する簡単な同等のCコードは何ですか?等価なCコードを使用して関数を指定してください。_mm_タイプ関数の等価Cコード
なぜこれらの機能が使用されていますか?
MSDNは、
void _mm_store_ps(float *p, __m128 a);
戻り最初の関数のための擬似コードを示しています。あなたが解決しようとしているように聞こえる以前同様の質問に基づいて
p[0] := a0
p[1] := a1
p[2] := a2
p[3] := a3
http://msdn.microsoft.com/en-us/library/s3h4ay6y(v=vs.80).aspx
を間違った問題。誤って整列されたデータを16バイトの整列されたデータを必要とするSSEルーチンに渡しているため、クラッシュする顔検出用の既存のSSEコードがあります。以前の質問では、人々はこの不整合を解決する方法を教えてくれました(Windowsでは_mm_malloc、Linuxではmemalign/posix_memalignを使用します)。しかし、あなたはこのアドバイスを無視しているようですが、代わりにあなたが誤ってすべてのSSEコード。 SSEが何であるか、SSEコードがどのように機能するのか、なぜ16バイトのアライメントが必要なのか、そしてこれを達成する方法を理解するために、時間をかけてください。既存のSSEコードは、データの不整列問題を修正する限り、WindowsまたはLinuxのいずれかで正常に動作するはずです。これは、実行していることを理解すれば比較的簡単な作業です。
私はposix_memalignを使いましたが、どうすればその16バイトが割り振られていることを確認できますか? – kamakshi
'posix_memalign'のmanページを読んでください:http://linux.die.net/man/3/posix_memalign - 16バイトのアライメントされたメモリを得るためには、2番目のパラメータ(整列)として16を渡すだけです。 –
あなたは目的を知らない同等の機能のCコードが必要ですか? – Simone
私はこれらが16バイトのメモリアライメントに使用されていると思います。bt hwはこれらが私が知らないallignedです。 – kamakshi
MSDNによると: '_mm_add_ps':* 4つの単精度浮動小数点値*と' _mm_store_ps'を追加します:* 4つの単精度浮動小数点値*を格納します。あなたの推測は正しくありません。 – Simone