要在Android上学习ARM Neon,我尝试运行示例代码。
但是我收到了一条错误消息。
uint16_t in[8] = {0, 1, 2, 3, 4, 5, 6, 7};
uint16_t out[8];
r = vld1q_u16(&in[0]);
**vst1q_u16(&out[0], r);** <-- Here comes an error message
错误消息是Invalid Arguments
我不明白为什么会出现问题。
vld1q_u16
正常工作,r
的值也正确。
但vst1q_u16
不起作用。
答案 0 :(得分:0)
你应该使用
r = vld1q_u16(in);
vst1q_u16(out, r);
像NEON这样的SIMD引擎默认会向后读取内存内容,所以给它数组元素0的地址是个坏主意。