这个问题是How to check if even/odd lane are in given ranges using SIMD?.
给定一个存储 16 个字符的
__m128i
,偶数索引通道指的是偶数通道(即 0、2、4、...、14 处的通道),而奇数索引通道指的是奇数通道(即,车道在 1、3、5、... 15)。在我的应用程序中,每个组都是不相交的,由两个相邻的车道组成,因此有 8 个组。
在我的应用程序中,每个组都有一些额外的限制(在编译时已知)。具体来说,如果偶数车道等于某个值(例如,
a
),则下一个奇数车道应该在给定范围内(例如,[b, c]
);否则,下一个奇数车道可以是任意的。
假设有两个限制条件:
# valid
vec = [2, 4, 3, 5, 1, 10, ...]
# invalid, because when 0-th (even) is 2, 6 is not in range of [1, 5]
vec = [2, 6, 3, 5, 1, 10, ...]
知道如何使用 SIMD 内在函数来检查给定的
__m128i
是否满足这些限制吗?