簡體   English   中英

將__m128d轉換為double

[英]Convert __m128d to double

我只是嘗試使用SSE擴展,我開始使用簡單的矢量點乘法。 所以我寫了下面的代碼:

void SSE_vectormult(double * A, double * B)
{
    __m128d a;
    __m128d b;
    a = _mm_load_pd(A);
    b = _mm_load_pd(B);
    const int mask = 0xf1;
    __m128d res = _mm_dp_pd(a,b,mask);
    A = res;
}

具有相同長度的AB向量。 現在,我必須將__m128d的結果轉換回double 有沒有簡單的方法(或轉換功能)?
謝謝!

你應該使用double dot = _mm_cvtsd_f64(res) 這從128位寄存器中提取低64位雙精度值。

load的對應物是store [ msintel ]。 所以在你的情況下我猜(雙精度,對齊指針,常規存儲):

_mm_store_pd(A, res); //A = res;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM