我试图弄清楚如何在 ARM neon 中生成条件商店。我想做的是相当于这个 SSE 指令:
无效 _mm_maskmoveu_si128(__m128i d, __m128i n, char *p);
它有条件地将d的字节元素存储到地址p。选择器n中每个字节的高位决定是否存储d中对应的字节。
关于如何使用 NEON 内在函数的任何建议?谢谢
这就是我所做的:
int8x16_t store_mask = {0,0,0,0,0,0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
int8x16_t tmp_dest = vld1q_u8((int8_t*)p_dest);
vbslq_u8(source,tmp_dest,store_mask);
vst1q_u8((int8_t*)p_dest,tmp_dest);