std::experimental::simd<T,Abi>::operator==,!=,<,<=,>,>=

来自cppreference.com
< cpp‎ | experimental‎ | simd‎ | simd
 
 
实验性
技术规范
文件系统库 (文件系统 TS)
库基础 (库基础 TS)
库基础 2 (库基础 TS v2)
库基础 3 (库基础 TS v3)
并行扩展 (并行 TS)
并行扩展 2 (并行 TS v2)
并发扩展 (并发 TS)
并发扩展 2 (并发 TS v2)
概念 (概念 TS)
范围 (范围 TS)
反射 (反射 TS)
数学特殊函数 (特殊函数 TR)
实验性非 TS 功能特性
模式匹配
线性代数
std::execution
契约
2D 图形
 
 
 
 
friend simd_mask operator==( const simd& lhs, const simd& rhs ) noexcept;
(1) (并行 TS v2)
friend simd_mask operator!=( const simd& lhs, const simd& rhs ) noexcept;
(2) (并行 TS v2)
friend simd_mask operator<( const simd& lhs, const simd& rhs ) noexcept;
(3) (并行 TS v2)
friend simd_mask operator<=( const simd& lhs, const simd& rhs ) noexcept;
(4) (并行 TS v2)
friend simd_mask operator>( const simd& lhs, const simd& rhs ) noexcept;
(5) (并行 TS v2)
friend simd_mask operator>=( const simd& lhs, const simd& rhs ) noexcept;
(6) (并行 TS v2)

逐元素对操作数的每个对应元素运用给定的比较。 返回一个 simd_mask,使得对于范围 [0size()) 中的所有 i,第 i 个元素等于:

1) lhs[i] == rhs[i]
2) lhs[i] != rhs[i]
3) lhs[i] <  rhs[i]
4) lhs[i] <= rhs[i]
5) lhs[i] >  rhs[i]
6) lhs[i] >= rhs[i]

参数

lhs - 左操作数
rhs - 右操作数

示例

#include <cassert>
#include <iostream>
#include <initializer_list>
#include <iterator>
 
#include <experimental/simd>
namespace stdx = std::experimental;
 
int main()
{
    using V = stdx::fixed_size_simd<int, 4>;
    using M = stdx::fixed_size_simd_mask<int, 4>;
 
    auto assert_equivalence = [](M&& x, std::initializer_list<int>&& y)
    {
        for (decltype(M::size()) i{}; i != M::size(); ++i)
            assert(x[i] == std::cbegin(y)[i]);
    };
 
    V a{2}, b, c{3};
    b[0] = 1, b[1] = 2, b[2] = 3, b[3] = 4;
 
    // a == {2, 2, 2, 2}
    // b == {1, 2, 3, 4}
    // c == {3, 3, 3, 3}
 
    assert_equivalence(a == a, {1, 1, 1, 1});
    assert_equivalence(a == b, {0, 1, 0, 0});
    assert_equivalence(b == c, {0, 0, 1, 0});
    assert_equivalence(a == c, {0, 0, 0, 0});
 
    assert_equivalence(a != a, {0, 0, 0, 0});
    assert_equivalence(a != b, {1, 0, 1, 1});
    assert_equivalence(b != c, {1, 1, 0, 1});
    assert_equivalence(a != c, {1, 1, 1, 1});
 
    assert_equivalence(a < a, {0, 0, 0, 0});
    assert_equivalence(a < b, {0, 0, 1, 1});
    assert_equivalence(b < c, {1, 1, 0, 0});
    assert_equivalence(a < c, {1, 1, 1, 1});
}

参阅

归约 simd_maskbool
(函数模板)
(并行 TS v2)
归约 simd_masktrue 值的数量
(函数模板)
归约 simd_mask 为其首个或最末 true 值的索引
(函数模板)
(并行 TS v2)
元素类型为 bool 的数据并行类型
(类模板)