数据类型
SIMD 提供 12 种数据类型,总长度都是 128 个二进制位。
- Float32x4:四个 32 位浮点数
- Float64x2:两个 64 位浮点数
- Int32x4:四个 32 位整数
- Int16x8:八个 16 位整数
- Int8x16:十六个 8 位整数
- Uint32x4:四个无符号的 32 位整数
- Uint16x8:八个无符号的 16 位整数
- Uint8x16:十六个无符号的 8 位整数
- Bool32x4:四个 32 位布尔值
- Bool16x8:八个 16 位布尔值
- Bool8x16:十六个 8 位布尔值
- Bool64x2:两个 64 位布尔值
每种数据类型被x
符号分隔成两部分,后面的部分表示通道数,前面的部分表示每个通道的宽度和类型。比如,Float32x4
就表示这个值有 4 个通道,每个通道是一个 32 位浮点数。
每个通道之中,可以放置四种数据。
- 浮点数(float,比如 1.0)
- 带符号的整数(Int,比如-1)
- 无符号的整数(Uint,比如 1)
- 布尔值(Bool,包含
true
和false
两种值)
每种 SIMD 的数据类型都是一个函数方法,可以传入参数,生成对应的值。
var a = SIMD.Float32x4(1.0, 2.0, 3.0, 4.0);
上面代码中,变量a
就是一个 128 位、包含四个 32 位浮点数(即四个通道)的值。
注意,这些数据类型方法都不是构造函数,前面不能加new
,否则会报错。
var v = new SIMD.Float32x4(0, 1, 2, 3);
// TypeError: SIMD.Float32x4 is not a constructor