簡體   English   中英

SSE:從const __m128 *轉換為const float *

[英]SSE: convert from const __m128 * to const float *

我正在嘗試編寫一些SSE代碼,但由於此錯誤而無法繼續:

錯誤C2664:'_mm_loadu_ps':無法將參數1從'const __m128 *'轉換為'const float *'

為了使用SSE內在函數,我必須加載未對齊的數據並轉換為__m128。 我正在網上搜索,但無法完成這項工作。 這是我的代碼:

const Matrix<T> mul_SSE (const Matrix<T>& m)const{
    // ...
    __m128 a = _mm_loadu_ps((__m128 const*)&m(0,0)); //<-Here's the error line
    // ...
}

參數m是浮點矩陣。 有什么建議嗎? 非常感謝你!

PS。 另外,如果我寫__m128 a = _mm_loadu_ps((__m128*)&m(0,0)); 這給了我同樣的錯誤:

錯誤C2664:'_mm_loadu_ps':無法將參數1從'__m128 *'轉換為'const float *'

解決:正確的方法:

__m128 a = _mm_loadu_ps(&m(0,0));

MSDN上的文檔指出_mm_loadu_ps帶有4個浮點數的float*

您需要傳遞一個float*指向矩陣中的float*數組(實際上是4個)。

當函數需要float*時,您正在__m128 const*矩陣的引用轉換為__m128 const* float*

暫無
暫無

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

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