AVX512 не требует специального ввода c для версии источника памяти 1 . Вы можете просто использовать _mm512_set1_ps
(что занимает float
, а не float*
). Компилятор должен использовать трансляцию источника памяти, если это эффективно. (Потенциально даже свернутый в источник широковещательной памяти для инструкции ALU вместо отдельной загрузки; AVX512 может сделать это для 512-битных векторов.)
https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text = _ mm512_set1_ps & expand = 5236,4980
Сноска 1: Причина, по которой _mm256_broadcast_ss
существует даже отдельно от _mm256_set1_ps
, возможно, связана с AVX1 vbroadcastss ymm, [mem]
против AVX2 vbroadcastss ymm, xmm
. Некоторые компиляторы, такие как MSV C и I CC, позволяют использовать встроенные функции, не позволяя расширениям ISA, которые компилятор может использовать где-либо, поэтому необходимо было использовать intrinsi c только для версии с памятью AVX1.
С AVX512, формы памяти и регистров были представлены с AVX512F, так что нет необходимости предоставлять пользователям этих компиляторов способ микроуправления, какой asm разрешен.