В чем разница между -mfpu = fpv5-sp-d16 и -mfpu = fpv5-d16?

Я пытаюсь заставить FPU FPv5-DP-D16-M двойной точности работать на ARM Cortex-M7f с компилятором arm-none-eabi-gcc. На основе документации < / a>, похоже, у меня есть два варианта включения FPU: -mfpu=fpv5-d16 и -mfpu=fpv5-sp-d16. «Fpv5» довольно понятен, а «d16» (как упомянуто в документации и в других вопросах StackOverflow) просто указывает на то, что существует эквивалент 16 регистров двойной точности вместо номинальных 32 регистров. Из-за отсутствия чего-либо еще, что имеет смысл, я предполагаю, что «sp» означает «одинарная точность», что означает, что fpv5-d16 - это тот вариант, который мне нужен.

Однако я не могу найти никакой документации, которая явно подтверждает это. Правильно ли мой вывод и почему нет опции / псевдонима fpv5-dp-d16, как в лязг?


person user2465116    schedule 15.02.2019    source источник


Ответы (1)


Ваш вывод верен, да. Вы можете просто обратиться к техническому справочному руководству по процессору Arm Cortex-M7., чтобы узнать, какие конфигурации ISA были доступны для начала.

Сказал, я действительно не знаю, что исходный инженер ARM добавление поддержки для него в gcc, возможно, думал (возможно, есть какие-то аппаратные махинации, оправдывающие это?). В любом случае, я под впечатлением, "правильная практика" в последних версиях gcc - просто использовать что-то вроде -march=armv7e-m+fpv5+fp.dp. И, возможно, по этой причине никто не стал проводить мозговой штурм, чтобы посмотреть на все возможные псевдонимы (действительно, вы уже можете видеть, что в патче 28 моей последней ссылки fpv5-d16 была почти запоздалой мыслью).

Но я думаю, что разработчики будут открыты для любых предложений?

person mirh    schedule 01.02.2020