Полный текст

В Go 1.27 завезли SIMDДвенадцать лет Go не умел в векторные инструкции без плясок с ассемблером. В 1.27 приехал портируемый пакет simd, и один исходник без единой правки разворачивается в Neon на Apple Silicon и AVX2 на Intel. Автор проверил обещание на двух машинах, полез в дизассемблер и наткнулся на странное. На Mac четыре полосы дали 4,2x, почти потолок. У i9 полос вдвое больше, восемь, а вышло ровно 5x.Куда делись ещё три икса? Разгадка неуютная для всех, кто верит в ширину регистра. Ту же половину выигрыша снимает обычный скаляр, без единой векторной инструкции, стоит завести четыре аккумулятора вручную. Ширина регистра тут вообще на втором плане.