MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

SIMD.float32x4

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

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.float32x4 データ型は浮動小数点値単精度を格納する4レーンに分かれた128ビットのベクトルです。

SIMD.float32x4

Figure 1: 128ビットSIMDレジスタ内のSIMD.float32x4

構文

SIMD.float32x4(x, y, z, w);

引数

入力値は倍精度浮動で指定され、格納される前に、単精度浮動小数点値に変換されます。

x Optional
最初のレーンの値を指定するdouble値。デフォルトではNaNになります。
y Optional
2番目のレーンの値を指定するdouble値。デフォルトではNaNになります。
z Optional
3番目のレーンの値を指定するdouble値。デフォルトではNaNになります。
w Optional
4番目のレーンの値を指定するdouble値。デフォルトではNaNになります。

コンストラクタ

シンプルなコンストラクタに加えて、SIMD APIでは次のコンストラクタを提供します。別のSIMDデータ型からfloat32x4に変換することもできることに注意して下さい。

SIMD.float32x4.splat()
引数で与えられた値にすべて設定したレーン値をもつfloat32x4を生成します。

演算

SIMD型で実際に何かするために、SIMDデータ型で動作するSIMD演算は必要です。

SIMD型を調べる

SIMD.float32x4.check()
引数が有効なfloat32x4データ型なら、新しいfloat32x4を返します。さもなければ、TypeErrorをスローします。

レーンへのアクセスおよび変異

SIMD.float32x4.extractLane()
与えられたレーンの値を返します。
SIMD.float32x4.replaceLane()
与えられ置き換えられたレーン値をもつ新しいfloat32x4を返します。

typed arraysからのロードと保存

SIMD.float32x4.load()
typed arrayからロードされたレーン値をもつ新しいfloat32x4を返します。
SIMD.float32x4.store()
float32x4をtyped arrayに保存します。

算術演算

SIMD.float32x4.abs()
絶対値のレーン値をもつ新しいfloat32x4を返します。
SIMD.float32x4.add()
加算されたレーン値をもつ新しいfloat32x4を返します(a + b)。
SIMD.float32x4.div()
除算されたレーン値をもつ新しいfloat32x4を返します(a / b)。
SIMD.float32x4.mul()
乗算されたレーン値をもつ新しいfloat32x4を返します(a * b)。
SIMD.float32x4.neg()
否定レーン値をもつ新しいfloat32x4を返します。
SIMD.float32x4.reciprocalApproximation()
逆数のレーン値の近似値をもつ新しいfloat32x4を返します。
SIMD.float32x4.reciprocalSqrtApproximation()
平方根の逆数のレーン値の近似値をもつ新しいfloat32x4を返します。
SIMD.float32x4.sub()
減算されたレーン値をもつ新しいfloat32x4を返します(a - b)。
SIMD.float32x4.sqrt()
レーン値の平方根をもつ新しいfloat32x4を返します。

シャッフルと再順序付け

SIMD.float32x4.shuffle()
シャッフルされたレーン値をもつ新しいfloat32x4を返します。
SIMD.float32x4.swizzle()
再順序付けされたレーン値をもつ新しいfloat32x4を返します。

最小/最大とクランプ

SIMD.float32x4.clamp()
下限と上限の間に縮められたレーン値をもつ新しいfloat32x4を返します。
SIMD.float32x4.max()
レーン値の最大値をもつ新しいfloat32x4を返します。
SIMD.float32x4.maxNum()
レーン値の最大値をもつ新しいfloat32x4を返します。NaNより数値が選ばれます。
SIMD.float32x4.min()
レーン値の最小値をもつ新しいfloat32x4を返します。
SIMD.float32x4.minNum()
レーン値の最小値をもつ新しいfloat32x4を返します。NaNより数値が選ばれます。

選択

SIMD.float32x4.select()
セレクタマスクに応じてレーンの混在になるレーン値をもつ新しいfloat32x4を返します。
SIMD.float32x4.selectBits()
セレクタマスクに応じてビットの混在になるレーン値をもつ新しいfloat32x4を返します。

比較

SIMD.float32x4.equal()
a == bに応じた選択マスクを返します。
SIMD.float32x4.notEqual()
a != bに応じた選択マスクを返します。
SIMD.float32x4.lessThan()
a < bに応じた選択マスクを返します。
SIMD.float32x4.lessThanOrEqual()
a <= bに応じた選択マスクを返します。
SIMD.float32x4.greaterThan()
a > bに応じた選択マスクを返します。
SIMD.float32x4.greaterThanOrEqual()
a >= bに応じた選択マスクを返します。

ビット単位の論理操作

SIMD.float32x4.and()
レーン値の論理AND演算値をもつ新しいfloat32x4を返します(a & b)。
SIMD.float32x4.or()
レーン値の論理OR演算値をもつ新しいfloat32x4を返します(a | b)。
SIMD.float32x4.xor()
レーン値の論理XOR演算値をもつ新しいfloat32x4を返します(a ^ b)。
SIMD.float32x4.not()
レーン値の論理NOT演算値をもつ新しいfloat32x4を返します(~a)。

データ変換 (パック / アンパック)

SIMD.float32x4.fromInt32x4()
int32x4からfloat変換された新しいfloat32x4データ型を生成します。
SIMD.float32x4.fromInt32x4Bits()
int32x4からビット単位にコピーされた新しいfloat32x4データ型を生成します。
SIMD.float32x4.fromFloat64x2()
float64x2からfloat変換された新しいfloat32x4データ型を生成します。
SIMD.float32x4.fromFloat64x2Bits()
float64x2からビット単位にコピーされた新しいfloat32x4データ型を生成します。
SIMD.float32x4.fromInt16x8Bits()
int16x8からビット単位にコピーされた新しいfloat32x4データ型を生成します。
SIMD.float32x4.fromInt8x16Bits()
int8x16からビット単位にコピーされた新しいfloat32x4データ型を生成します。

float32x4のコンストラクタ

SIMD.float32x4(1, 2, 3, 4); // float32x4[1, 2, 3, 4]
SIMD.float32x4(1, 2);       // float32x4[1, 2, NaN, NaN]
SIMD.float32x4();           // float32x4[NaN, NaN, NaN, NaN]

仕様

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,