в Linux все просто - народ верит только бенчмаркам, тема с memcpy всплывает в рассылке по паре раз в год, но arch-маинтейнеры не лыком шиты - и тормозной код никак не пройдет. код memcpy отличается для каждой архитектуры так как особенность конвейеров, кешей, стандартных задержек между кешем и памятью, видов и исполнения инструкций (выборка/декодирование/исполнение) у каждой one разный. более того - следует учитывать ньюансы переключения задач, сбросов кешей при этом и сохранения регистров сопроцессоров - например, код memcpy, который жестоко юзает FPU/SIMD инструкции фиг пройдет, так как при переключении задач закукуаешься их всех сохранять

В данном случае мы видим классический loop unroll сделанный вручную под конвейер ARM, без каких либо надежд на gcc

Если есть сомнения - пишем свою версию и тестим на железе - при дальнейших раскопках лагов, все станет понятно
P.S.
педивикия - unroll