ARM для вызова C, NEON регистрирует для сохранения

Существует подобное сообщение, которое охватывает обычные регистры. Что относительно регистров NEON. Насколько я помню, верхняя половина или нижняя половина регистров должны быть сохранены во всех вызовах функций. Я не могу найти эту информацию нигде, может кто-нибудь уточнить это?

спасибо

Из AAPCS, §5.1.1 Основные регистры:

  • r0-r3 - регистры аргументов и царапин; r0-r1 также являются реестрами результатов
  • r4-r8 - регистры сохранения вызываемого абонента
  • r9 может быть регистром сохранения вызываемого абонента или нет (в некоторых вариантах AAPCS это специальный регистр)
  • r10-r11 - регистры сохранения вызываемого абонента
  • r12-r15 - специальные регистры

Из AAPCS, §5.1.2.1 Соглашения об использовании регистра VFP (VFP v2, v3 и расширенное расширение SIMD):

  • s16-s31 (d8-d15, q4-q7) должен быть сохранен
  • s0-s15 (d0-d7, q0-q3) и d16-d31 (q8-q15) не нужно сохранять

Ответ 1

Из AAPCS, §5.1.2.1:

  • s16-s31 (d8-d15, q4-q7) должен быть сохранен
  • s0-s15 (d0-d7, q0-q3) и d16-d31 (q8-q15) не нужно сохранять