Skip to content

Latest commit

 

History

History
76 lines (55 loc) · 1.94 KB

File metadata and controls

76 lines (55 loc) · 1.94 KB

operator&

  • simd[meta header]
  • std::simd[meta namespace]
  • basic_vec[meta class]
  • function[meta id-type]
  • cpp26[meta cpp]
friend constexpr basic_vec operator&(const basic_vec& lhs, const basic_vec& rhs) noexcept;

概要

2つのbasic_vecオブジェクトの対応する要素同士でビットごとの論理積を求める。要素型が整数型である場合に使用できる。

Hidden friendsとして定義される。

テンプレートパラメータ制約

a & babvalue_type型)が適格であること。

戻り値

lhsrhsにビット論理積を要素ごとに適用した結果で初期化されたbasic_vecオブジェクトを返す。

#include <simd>
#include <print>
#include <cstdint>

namespace simd = std::simd;

int main()
{
  std::uint8_t av[] = {0b00001100, 0b00001010, 0b00000110, 0b00000101};
  std::uint8_t bv[] = {0b00001010, 0b00000110, 0b00000011, 0b00000100};
  simd::vec<std::uint8_t, 4> a = [&](int i) { return av[i]; };
  simd::vec<std::uint8_t, 4> b = [&](int i) { return bv[i]; };

  simd::vec<std::uint8_t, 4> c = a & b;

  for (int i = 0; i < c.size(); ++i) {
    std::println("{:08b} & {:08b} -> {:08b}", a[i], b[i], c[i]);
  }
}
  • simd::vec[color ff0000]
  • c.size()[link size.md]

出力

00001100 & 00001010 -> 00001000
00001010 & 00000110 -> 00000010
00000110 & 00000011 -> 00000010
00000101 & 00000100 -> 00000100

バージョン

言語

  • C++26

処理系

関連項目

参照