2013-02-22 97 views

回答

3
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

+1

+1的互动在线编译器。 – Spectravideo328 2013-02-22 19:33:33