像armv7中的D寄存器一样,如何在armv8中获得Vn.8h的一半64bit?

时间:2018-09-17 04:03:23

标签: arm simd neon

我这样加载数据:

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

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

1 个答案:

答案 0 :(得分:0)

这是将标量与向量相乘。

您可以使用smlal2指令解决此问题。

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

这将乘以低64位。

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

这将乘以高64位。

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