【发布时间】:2022-01-11 04:23:05
【问题描述】:
FP 比较像 SSE2 _mm_cmpeq_pd / AVX _mm_cmp_pd 可以用来比较 64 位整数吗?
这个想法是模拟丢失的_mm_cmpeq_epi64,它类似于_mm_cmpeq_epi8、_mm_cmpeq_epi16、_mm_cmpeq_epi32。
担心的是我不确定比较是按位进行还是专门处理浮点数,比如 NAN 值总是不相等的。
【问题讨论】:
-
不是直接的,因为
NaN != NaN和-0.0 == 0.0。可能通过一些巧妙的小技巧可以实现。 -
@chtz,谢谢,这对我来说已经足够了,如果你愿意,你可以把这个作为答案发布,我不会去玩聪明的小玩意儿,那么用
_mm_cmpeq_epi32会更容易。 -
我认为这应该适用于任何“正常”
c:_mm_cmpeq_pd(c, _mm_xor_pd(c, _mm_xor_pd(a,b)));。虽然有趣的是,gcc 优化了c(但您可以通过混合 xor 操作的顺序来欺骗它):godbolt.org/z/jraEq9seb