-1

我像这样加载数据:

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]'

所以我想知道如何在armv8中获得Vn.8h的半个64位,就像armv7中的D寄存器一样?

4

1 回答 1

0

这是将标量与向量相乘。

您可以使用 smlal2 指令来解决这个问题。

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

这将乘以低 64 位。

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

这将乘以高 64 位。

对于那些对此感到困惑的人...

于 2018-09-17T10:19:20.680 回答