加载矢量NEON内在函数

时间:2013-09-05 17:55:19

标签: arm neon intrinsics

我想从128位的内存向量加载: 我有这些指示:

int8x16_t* p1=(int8x16_t*)srcimg.data;
int8x16_t* p2=(int8x16_t*)(srcimg.data+srcimg.cols); 

问题是加载功能是这个:

int8x16_t vld1q_s8(__transfersize(16) int8_t const * ptr); 

我不明白为什么函数输入int8_t *值。

我想做这样的事情:

int8x16_t vector;
vector=vld1q_s8(p1); 

我该怎么做?谢谢。

1 个答案:

答案 0 :(得分:3)

它应该已经如下所示。

int8x16_t vector;
vector=vld1q_s8((int8_t *) srcimg.data);

int8x16_t是一种矢量类型,旨在使其易于阅读矢量布局。

int8_t就是你所谓的字节。

大声朗读应该听起来像是“从这个字节流加载到四个寄存器中”。

如果您还检查gcc arm intrinsics page,则无法找到指向这些矢量类型的指针。它们意味着映射到SIMD寄存器,而且通常不会指向寄存器的指针。

如果您想获得有关霓虹灯编程的更多信息,可以查看ARM's websiteblog series