この記事は編集レビューを必要としています。ぜひご協力ください。
この翻訳は不完全です。英語から この記事を翻訳 してください。
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.int8x16
データ型は8ビットの符号付き整数値を格納する16レーンに分かれた128ビットのベクトルです。
Figure 1: 128ビットSIMDレジスタ内のSIMD.int8x16
構文
SIMD.int8x16(s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15);
引数
s[0-15]
Optional- レーンの値を指定する整数値。デフォルトでは0になります。
コンストラクタ
シンプルなコンストラクタに加えて、SIMD APIでは次のコンストラクタを提供します。別のSIMDデータ型からint8x16に変換することもできることに注意して下さい。
SIMD.int8x16.splat()
- 引数で与えられた値にすべて設定したレーン値をもつint8x16を生成します。
SIMD.int8x16.bool()
- boolean引数をもつint8x16を生成します。明示的な選択マスクを生成することができます。
演算
SIMD型で実際に何かするために、SIMDデータ型で動作するSIMD演算は必要です。
SIMD型を調べる
SIMD.int8x16.check()
- 引数が有効なint8x16データ型なら、新しいint16x8を返します。さもなければ、
TypeError
をスローします。
レーンへのアクセスおよび変異
SIMD.int8x16.extractLane()
- 与えられたレーンの値を返します。
SIMD.int8x16.replaceLane()
- 与えられ置き換えられたレーン値をもつ新しいint8x16を返します。
typed arraysからのロードと保存
SIMD.int8x16.load()
- typed arrayからロードされたレーン値をもつ新しいint8x16を返します。
SIMD.int8x16.store()
- int8x16をtyped arrayに保存します。
算術演算
SIMD.int8x16.add()
- 加算されたレーン値をもつ新しいint8x16を返します(
a + b
). SIMD.int8x16.mul()
- 乗算されたレーン値をもつ新しいint8x16を返します(
a * b
). SIMD.int8x16.neg()
- 否定レーン値をもつ新しいint8x16を返します。
SIMD.int8x16.sub()
- 減算されたレーン値をもつ新しいint8x16を返します(
a - b
).
シャッフルと再順序付け
SIMD.int8x16.shuffle()
- シャッフルされたレーン値をもつ新しいint8x16を返します。
SIMD.int8x16.swizzle()
- 再順序付けされたレーン値をもつ新しいint8x16を返します。
選択
SIMD.int8x16.select()
- セレクタマスクに応じてレーンの混在になるレーン値をもつ新しいint8x16を返します。
SIMD.int8x16.selectBits()
- セレクタマスクに応じてビットの混在になるレーン値をもつ新しいint8x16を返します。
比較
SIMD.int8x16.equal()
a == b
に応じた選択マスクを返します。SIMD.int8x16.notEqual()
a != b
に応じた選択マスクを返します。SIMD.int8x16.lessThan()
a < b
に応じた選択マスクを返します。SIMD.int8x16.lessThanOrEqual()
a <= b
に応じた選択マスクを返します。SIMD.int8x16.greaterThan()
a > b
に応じた選択マスクを返します。SIMD.int8x16.greaterThanOrEqual()
a >= b
に応じた選択マスクを返します。
ビット単位の論理操作
SIMD.int8x16.and()
- レーン値の論理AND演算値をもつ新しいint8x16を返します(
a & b
)。 SIMD.int8x16.or()
- レーン値の論理OR演算値をもつ新しいint8x16を返します(
a | b
)。 SIMD.int8x16.xor()
- レーン値の論理XOR演算値をもつ新しいint8x16を返します(
a ^ b
)。 SIMD.int8x16.not()
- レーン値の論理NOT演算値をもつ新しいint8x16を返します(
~a
)。
ビット単位のシフト操作
SIMD.int8x16.shiftLeftByScalar()
- 引数で与えられたビット数で左へシフトされたレーン値をもつ新しいint8x16を返します(
a << bits
)。 SIMD.int8x16.shiftRightArithmeticByScalar()
- 引数で与えられたビット数で(算術)右シフトされたレーン値をもつ新しいint8x16を返します(
a >> bits
)。 SIMD.int8x16.shiftRightLogicalByScalar()
- 引数で与えられたビット数で論理右シフトされたレーン値をもつ新しいint8x16を返します(
a >>> bits
)。
データ変換 (パック / アンパック)
SIMD.int8x16.fromFloat32x4Bits()
- float32x4からビット単位にコピーされた新しいint8x16データ型を生成します。
SIMD.int8x16.fromFloat64x2Bits()
- float64x2からビット単位にコピーされた新しいint8x16データ型を生成します。
SIMD.int8x16.fromInt32x4Bits()
- int32x4からビット単位にコピーされた新しいint8x16データ型を生成します。
SIMD.int8x16.fromInt16x8Bits()
- int16x8からビット単位にコピーされた新しいint8x16データ型を生成します。
例
int8x16のコンストラクタ
SIMD.int8x16(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16); // int8x16[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16] SIMD.int8x16(1, 2); // int8x16[1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0] SIMD.int8x16(); // int8x16[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
仕様
SIMDはまだ公式規格文書やドラフトでサポートされていません。typed arraysに基づいた標準化作業や互換性実装のために、ecmascript_simd GitHub リポジトリを確かめて下さい。
ブラウザ実装状況
機能 | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
基本サポート | 未サポート | 未サポート | 未サポート | 未サポート | 未サポート |
機能 | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
基本サポート | 未サポート | 未サポート | 未サポート | 未サポート | 未サポート | 未サポート |