【发布时间】:2022-07-07 22:36:32
【问题描述】:
所以首先我将描述一下任务:
我需要:
- 比较两个
__m128i。 - 以某种方式对具有特定
uint16_t值的结果进行按位运算(可能先使用_mm_movemask_epi8,然后仅使用&)。 - 根据结果做初始值的
blend。
所以问题是你可能已经猜到了 blend 接受 __m128i 作为掩码,而我将拥有 uint16_t。所以要么我需要对_mm_movemask_epi8 进行某种逆向指令,要么完全做其他事情。
一些要点——我可能无法将uint16_t 值更改为其他类型,这很复杂;我在 SSE4.2 上这样做,所以没有 AVX; How to perform the inverse of _mm256_movemask_epi8 (VPMOVMSKB)? 这里有一个类似的问题,但它是关于 avx 的,我对此非常缺乏经验,所以我无法采用该解决方案。
PS:我可能也需要为 arm 执行此操作,不胜感激。
【问题讨论】: