我想从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);
我该怎么做?谢谢。
答案 0 :(得分:3)
它应该已经如下所示。
int8x16_t vector;
vector=vld1q_s8((int8_t *) srcimg.data);
int8x16_t
是一种矢量类型,旨在使其易于阅读矢量布局。
int8_t
就是你所谓的字节。
大声朗读应该听起来像是“从这个字节流加载到四个寄存器中”。
如果您还检查gcc arm intrinsics page,则无法找到指向这些矢量类型的指针。它们意味着映射到SIMD
寄存器,而且通常不会指向寄存器的指针。
如果您想获得有关霓虹灯编程的更多信息,可以查看ARM's website和blog series。