Skip to content

Latest commit

 

History

History
79 lines (60 loc) · 2.22 KB

File metadata and controls

79 lines (60 loc) · 2.22 KB

reduce_max_index

  • simd[meta header]
  • std::simd[meta namespace]
  • function template[meta id-type]
  • cpp26[meta cpp]
namespace std::simd {
  template<std::size_t Bytes, class Abi>
  constexpr simd-size-type
    reduce_max_index(const basic_mask<Bytes, Abi>& k); // (1) C++26

  constexpr simd-size-type
    reduce_max_index(std::same_as<bool> auto x);       // (2) C++26
}
  • simd-size-type[link /reference/simd/simd-size-type.md]
  • basic_mask[link basic_mask.md]
  • std::same_as[link /reference/concepts/same_as.md]

概要

マスクのうち、trueである要素の最大のインデックス(最後にtrueとなる要素の位置)を取得する。

  • (1) : basic_maskkのうち、trueである要素の最大のインデックスを返す。
  • (2) : スカラーのboolxに対するオーバーロード(SIMD-genericなコードを書けるようにするためのもの)。

戻り値の型simd-size-typeは、要素数を表す説明専用の符号付き整数型である。

事前条件

  • (1) : any_of(k)trueであること
  • (2) : xtrueであること

戻り値

  • (1) : k[i]trueとなる最大のインデックスiを返す。
  • (2) : 0を返す。

#include <simd>
#include <print>

namespace simd = std::simd;

int main()
{
  simd::vec<int, 4> v([](int i) { return i; }); // {0, 1, 2, 3}

  // 値が1より小さい最後の要素のインデックス
  std::println("{}", simd::reduce_max_index(v < 2));
}
  • simd::reduce_max_index[color ff0000]
  • simd::vec[link basic_vec.md]

出力

1

バージョン

言語

  • C++26

処理系

関連項目

参照