Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

SIMD.%type%.select()

この記事は編集レビューを必要としています。ぜひご協力ください

この翻訳は不完全です。英語から この記事を翻訳 してください。

This is an experimental technology, part of the Harmony (ECMAScript 7) proposal.
Because this technology's specification has not stabilized, check the compatibility table for usage in various browsers. Also note that the syntax and behavior of an experimental technology is subject to change in future version of browsers as the spec changes.

静的なSIMD.%type%.select() メソッドはセレクタマスクから選択マッチになるレーン値をもつ新しい対応するSIMDデータ型を生成します。

構文

SIMD.float32x4.select(mask, trueValue, falseValue)
SIMD.float64x2.select(mask, trueValue, falseValue)
SIMD.int8x16.select(mask, trueValue, falseValue)
SIMD.int16x8.select(mask, trueValue, falseValue)
SIMD.int32x4.select(mask, trueValue, falseValue)

引数

mask
セレクタマスクとして使用されるint32x4int16x8int8x16
trueValue
セレクタマスクレーン値がtrueなら、この引数から対応するレーン値を選びます。
falseValue
セレクタマスクレーン値がfalseなら、この引数から対応するレーン値を選びます。

説明

SIMD.%type%.select() メソッドは選択マスクからレーン値を選びます。レーン値をマスキングする(または "ブランチする")ことは、SIMDデータ型において関数上で操作できないので役に立ちます。しかし、マスクとselect関数で、必要な結果のベクトルを組み立てるためにベクトルをブランチしたりマージしたりしてください。

カスタム選択マスク

この例では、カスタム選択マスクを生成するためにint32x4.bool() 関数を使います。このマスクで、最初のfloat32x4データ型から最初と最後のレーン値を選ぶことができます。このようにして、select 関数はベクトルaから最初と最後のレーンを、ベクトルbから第2と第3のレーンを選びます。(または、2番目のselectではsumベクトルから)。

var a = SIMD.float32x4(1, 2, 3, 4);
var b = SIMD.float32x4(5, 6, 7, 8);

var mask = SIMD.int32x4.bool(true, false, false, true);

SIMD.float32x4.select(mask, a, b);
// float32x4[1, 6, 7, 4]

var sum = SIMD.float32x4.add(a,b);
SIMD.float32x4.select(mask, a, sum);
// float32x4[1, 8, 10, 4]

選択マスクを返す操作

すべてのSIMD comparison operations は、比較の結果を実際に得るために、selectをしなければならない選択マスクを返します。:

var a = SIMD.float32x4(0, 12, 3, 4);
var b = SIMD.float32x4(0, 6, 7, 50);

var mask = SIMD.float32x4.lessThan(a,b);
// int32x4[0, 0, -1, -1]

var result = SIMD.float32x4.select(mask, a, b);
// float32x4[0, 6, 3, 4]

仕様

SIMDはまだ公式規格文書やドラフトでサポートされていません。typed arraysに基づいた標準化作業や互換性実装のために、ecmascript_simd GitHub リポジトリを確かめて下さい。

ブラウザ実装状況

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート 未サポート Nightly build 未サポート 未サポート 未サポート
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート 未サポート 未サポート Nightly build 未サポート 未サポート 未サポート

関連情報

ドキュメントのタグと貢献者

 このページの貢献者: shide55
 最終更新者: shide55,