我正在将一些ARM NEON代码移植到64位ARM-v8,但我找不到关于它的好文档。
许多功能似乎已经消失,我不知道如何在不使用它们的情况下实现相同的功能。
因此,一般的问题是:我在哪里可以找到新SIMD实现的完整参考,包括如何执行许多ARM-NEON教程中解释的相同简单任务的说明?
有关特定功能的一些问题:
1 - 如何在Dx寄存器的所有通道中加载一个值?旧代码是
mov R0, #42
vdup.8 D0, R0
我的猜测是:
mov W0, #42
dup V0.8B, W0
2 - 如何使用交错数据加载多个Dx / Qx寄存器?在旧代码中,这是:
vld4.8 {D0-D3}, [R0]!
但我在新文档中找不到任何内容。
我知道这是一个全新的模型,但它没有很好地记录(或者至少,我无法找到任何可读样本的参考)
答案 0 :(得分:4)
在Android中使用ARMv8的文档不是很好,但针对您的具体问题,本文档中的答案非常好:
ARMv8 Instruction Set Overview
回答您的具体问题:
mov R0, #42
vdup.8 D0, R0
变为
mov w0,#42
dup v0.8b,w0
和
vld4.8 {d0-d3}, [r0]!
变为
ld4 {v0.8b,v1.8b,v2.8b,v3.8b},[x0],#32