如何在armv7中得到armv8中的64位Vn.8h,就像arm寄存器中的D寄存器一样?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在armv7中得到armv8中的64位Vn.8h,就像arm寄存器中的D寄存器一样?相关的知识,希望对你有一定的参考价值。

我加载这样的数据:

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中获得armv8中的64位Vn.8h,就像armv7中的D寄存器一样?

答案

这是一个带有向量的标量。

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

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

这将乘以低64位。

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

这将乘以高64位。

对于那些困惑的人......

以上是关于如何在armv7中得到armv8中的64位Vn.8h,就像arm寄存器中的D寄存器一样?的主要内容,如果未能解决你的问题,请参考以下文章

iOS armv7, armv7s, arm64区别与应用32位、64位配置

有没有人总结过ARMv7和ARMv8的区别

什么是armv7s?

armeabi-v7a armerabi arm64-v8a区别

ARMv8-A vs ARMv7 Registers

conan入门(十七):支持android NDK (armv7,armv8,x86,x86_64)交叉编译的统一profile jinja2模板