Function core::arch::x86_64::_mm_mpsadbw_epu8

1.27.0 · source ·
pub unsafe fn _mm_mpsadbw_epu8(
    a: __m128i,
    b: __m128i,
    const IMM8: i32
) -> __m128i
Available on (x86 or x86-64) and target feature sse4.1 and x86-64 only.
Expand description

减去 8 位无符号整数值,然后将差的绝对值计算为目标中的相应位。

然后,根据立即操作数中的位字段返回绝对差之和。

执行以下算法:

i = IMM8[2] * 4
j = IMM8[1:0] * 4
for k := 0 to 7
    d0 = abs(a[i + k + 0] - b[j + 0])
    d1 = abs(a[i + k + 1] - b[j + 1])
    d2 = abs(a[i + k + 2] - b[j + 2])
    d3 = abs(a[i + k + 3] - b[j + 3])
    r[k] = d0 + d1 + d2 + d3
Run

Arguments:

  • a-__m128i 类型的 128 位 vector。
  • b-__m128i 类型的 128 位 vector。
  • IMM8 - 一个 8 位 immediate 操作数,指定如何计算绝对差
    • [2] 位指定操作数 a 的偏移量
    • [1:0] 位指定操作数 b 的偏移量

Returns:

  • __m128i vector 包含两个操作数之间的绝对差集的总和。

Intel’s documentation