Как использовать STD :: SIMD в качестве ввода функций Intrinsics SIMD?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как использовать STD :: SIMD в качестве ввода функций Intrinsics SIMD?

Сообщение Anonymous »

На данный момент функции, предоставленные std :: datapar :: simd и std :: experimental :: simd несколько ограничены, особенно когда речь идет о перетасовке элементов или нетривиальной нагрузки. Допустим, у меня есть следующее: < /p>

Код: Выделить всё

std::array a = {
0, 100, 200, 300, 400, 500, 600, 700,
800, 900, 1000, 1100, 1200, 1300, 1400, 1500
};
std::array vindex_data = {3, 7, 11, 15};
unsigned long long int* base_addr = a.data();
std::experimental::fixed_size_simd vindex(
vindex_data.data(),
std::experimental::element_aligned
);
int scale = sizeof(unsigned long long int);
std::experimental::fixed_size_simd v;
/* And then I would like to load v using _mm256_i32gather_epi64*/
v = _mm256_i32gather_epi64(base_addr, vindex, scale); // This will not compile
Есть ли какой-либо нестандартный способ, который бы работал на GCC и clang , чтобы вызвать внутренние функции SIMD на std :: datapar :: simd и std :: experimental :: simd (может>

Подробнее здесь: https://stackoverflow.com/questions/795 ... -functions
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»