Не все компиляторы имеют все псевдонимы для встроенного (разные имена для одной и той же вещи). Кроме того, чтобы попробовать их на Godbolt, IDK узнает, какие из них являются переносимыми в текущих версиях основных четырех компиляторов.
Но да, GCC / clang допускает ошибки, связанные с отсутствием _mm
встроенных функций, особенно тех, которыеДокументы Intel.
_mm_broadcastsd_pd
задокументировано Intel как неотъемлемая часть movddup
, поэтому вы не пропустите ничего. Что еще более важно, это немного вводит в заблуждение, потому что нет vbroadcastsd xmm, xmm
, только с назначением YMM или ZMM . (_mm256_broadcast_sd(double *a);
и _mm256_broadcastsd_pd(__m128d a);
)
Справочное руководство asm даже не документирует _mm_broadcastsd_pd
в vbroadcast или запись movddup
;это только в руководстве по встроенным функциям.
GCC, вероятно, захочет добавить это, тем более, что у clang это есть. Наличие _mm_broadcastsd_pd
в качестве псевдонима было бы полезно для людей, которые ищут его и не знают достаточно хорошо, чтобы знать, что им нужен movddup
. (Или с инструкциями AVX с 3 операндами, movlhps
или unpcklpd
то же самое, то же самое)