Как получить половину 64-битного Vn.8h в armv8 как D зарегистрировать в armv7? - PullRequest
0 голосов
/ 17 сентября 2018

Я загружаю данные следующим образом:

ld1 {v8.8h, v9.8h, v10.8h, v11.8h}, [%8], #64

Но когда я использую данные для расчета, происходит ошибка:

smlal   v16.4s, v8.2d[0], v0.h[0]

Ошибка:

/ tmp / cc2h1F9Y.s: 523: Ошибка: операнд 2 должен быть векторным регистром SIMD - `smlal v16.4s, v8.2d [0], v0.h [0]'

Итак, я хочу знать, как получить половину 64-битного Vn.8h в armv8 как регистр D в armv7?

1 Ответ

0 голосов
/ 17 сентября 2018

Это умножить скаляр на вектор.

Вы можете использовать инструкцию smlal2 для решения этой проблемы.

smlal v16.4s, v8.4h, v0.h [0]

Это умножит младшие 64 бита.

smlal2 v16.4s, v8.8h, v0.h [0]

И это умножит старшие 64 бита.

Для тех, кто смущен этим ...

...