ARMネオンで条件付きストアを生成する方法を見つけようとしています。私がやりたいことは、この SSE 命令と同等です。
void _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);