gpt4 book ai didi

assembly - 什么 NEON 汇编代码将两个向量组合成长向量?

转载 作者:行者123 更新时间:2023-12-04 05:09:42 24 4
gpt4 key购买 nike

ARM Neon 内在 vcombine_s16 将两个向量合并为一个长向量。它的汇编代码是什么?

最佳答案

int16x8_t vcombine_s16 (int16x4_t, int16x4_t)

没有直接匹配指令,它是一种将两个双寄存器视为四寄存器并在 C 中提供类型安全的方法。您可以在需要时通过调用双寄存器或四寄存器隐式地在汇编中执行此操作到。有关 NEON 寄存器组的可能用法,请参见下图。

可以看到gccdocumentation对于内在函数。

关于如何在汇编中实现,您仍然可以使用 gcc

#include "arm_neon.h"

int16x8_t c(int16x4_t a, int16x4_t b) {
return vcombine_s16(b, a);
}

变成

c(__simd64_int16_t, __simd64_int16_t):
vswp d1, d0
bx lr

我实际上生成了这个 online .

所以最后我认为这归结为如果寄存器相邻则它们已经合并,否则您可以使用 vmovvswp

查看此 arm documentation关于 neon 寄存器如何放置和引用。

enter image description here

关于assembly - 什么 NEON 汇编代码将两个向量组合成长向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15031030/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com