2

我想从 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); 

我该怎么做?谢谢。

4

1 回答 1

3

它应该已经像下面那样工作了。

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

int8x16_t是一种矢量类型,创建它是为了便于阅读矢量布局。

int8_t就是你所说的字节。

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

如果您还检查gcc arm intrinsics page,您应该无法找到任何指向这些向量类型的指针。它们的意思是映射到SIMD寄存器,而您通常不会谈论指向寄存器的指针。

如果您想获得有关霓虹灯编程的更多信息,您可以查看ARM 的网站和此博客系列

于 2013-09-05T18:05:46.087 回答