如何使用SIMD检查奇数车道是否在给定范围内,当其先前的偶数车道等于某个值时?

问题描述 投票:0回答:0

这个问题是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]
);否则,下一个奇数车道可以是任意的。

假设有两个限制条件:

  • 2, [1, 5]
  • 3, [4, 6]
# 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
是否满足这些限制吗?

x86 simd sse
© www.soinside.com 2019 - 2024. All rights reserved.