数据类型

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,包含truefalse两种值)

每种 SIMD 的数据类型都是一个函数方法,可以传入参数,生成对应的值。

  1. var a = SIMD.Float32x4(1.0, 2.0, 3.0, 4.0);

上面代码中,变量a就是一个 128 位、包含四个 32 位浮点数(即四个通道)的值。

注意,这些数据类型方法都不是构造函数,前面不能加new,否则会报错。

  1. var v = new SIMD.Float32x4(0, 1, 2, 3);
  2. // TypeError: SIMD.Float32x4 is not a constructor