Как я могу сохранить тип данных __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 );
}
}