Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我像这样加载数据:
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寄存器一样?
这是将标量与向量相乘。
您可以使用 smlal2 指令来解决这个问题。
smlal v16.4s、v8.4h、v0.h[0]
这将乘以低 64 位。
smlal2 v16.4s、v8.8h、v0.h[0]
这将乘以高 64 位。
对于那些对此感到困惑的人...