Это простая целая копия регистра, следовательно, тип элемента не имеет значения.
Инструкция по сборке фактически поддерживает только 8b
и 16b
, задающие двойной или четырехместный регистр, и, таким образом, GCC верен в этом, в то время как Clang более терпим, хотя и в некоторой степени вводит в заблуждение, как в этом случае.
Честно говоря, мне не нравится синтаксис aarch64
.
В aarch32
тип данных определяется суффиксом инструкции, в то время как это делается суффиксом регистра в aarch64
, который необходимо присоединить ко ВСЕМ регистрам операндов.
Этот новый синтаксис не только раздражает, но и вызывает проблемы.
Простого vmov q5, q8
было бы достаточно в этом случае на aarch32
без каких-либо хлопот.