2
将ARM Neon内部的vcombine_s16 combinet两个向量合并成一个长向量。什么是汇编代码?将两个向量组合成长向量的霓虹灯汇编代码?
将ARM Neon内部的vcombine_s16 combinet两个向量合并成一个长向量。什么是汇编代码?将两个向量组合成长向量的霓虹灯汇编代码?
int16x8_t vcombine_s16 (int16x4_t, int16x4_t)
没有直接匹配指令,它是处理两个双注册为一个四寄存器,并提供类型安全的C.你会做,在装配隐含只调用双核或四寄存器的方式每当需要时。 NEON注册库的用法见下图。
对于内在函数,可以看到gcc
的documentation。
对于如何做到这一点用汇编语言实现的,你仍然可以使用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。
因此,最后我认为这是如果寄存器相邻,那么他们已经结合起来,如果不是,你可以只使用vmov
或vswp
。
看到这个arm documentation关于如何neon
登记和引用。
+1的互动在线编译器。 – Spectravideo328 2013-02-22 19:33:33