Я пытаюсь написать код AVX2 с использованием встроенных функций.Хотите знать, как использовать встроенные функции Intel для передачи самого низкого слова в YMM всему YMM.Я знаю, что с ассемблерным кодом я мог бы просто написать
vpbroadcastw ymm1, xmm0
, потому что самое низкое слово ymm0 также является самым низким словом xmm0.У меня есть переменная х, которая является значением в YMM.Но
_mm256_broadcastw_epi16((__m128i) x)
, где x - это __m256i, возвращает ошибку - не может преобразовать две вещи разных размеров.
rq_recip3_new.c:381:5: error: can’t convert a value of type ‘__m256i {aka __vector(4) long long int}’ to vector type ‘__vector(2) long long int’ which has different size
Я не думаю,это важно, но мои машины используют gcc 6.4.1 и 7.3 (Fedora 25 и Ubuntu LTS 16.04 соответственно).