簡體   English   中英

將__m256i存儲為整數

[英]Store __m256i to integer

如何將__m256i數據類型存儲為整數?

我知道花車有:

_mm256_store_ps(float *a, __m256 b)

其中第一個參數是輸出數組。

對於整數,我只能找到:

_mm256_store_si256(__m256i *a, __m256i b)

其中兩個參數均為__m256i數據類型。

做這樣的事情是否足夠:

int * X = (int*) _mm_malloc( N * sizeof (*X) ,32 );

(我正在使用它作為函數的參數,我想獲取它的值)

內部功能:

__m256i * Xmmtype = (__m256i*) X;

//fill output
_mm256_store_si256( &Xmmtype[ i ] , T ); //T is __m256i

這個可以嗎?

- - -更新 - - - - - - - - - - - -

好的,如果我有:

__m256i T;

for ( y = 0; y < h; y++ )
{ 
    for ( x = 0; x < w; x++ )
    {
        for ( int i = 0; i < N; i+=8 )
        {
            //calculate here the  T

        } 

        //write result
        _mm256_store_si256( &Xmmtype[ x + y * w ] , T );


    } 

} 

您已經完成了,但是您不需要創建臨時指針-您可以直接應用強制類型轉換,例如:

_mm256_store_si256( (__m256i *)X, T );

要么:

_mm256_store_si256( (__m256i *)&X[i], T );


根據您問題的最新編輯進行更新:

看起來您正在以不滿足AVX對齊要求的方式為X編制索引,即,不能保證X[i]是32字節對齊的,因此您應該使用未對齊的存儲:

 _mm256_storeu_si256( (__m256i *)&X[i], T ); 

暫無
暫無

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

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