@ 240904.2raw
current
Instruction LLVM[1] V8[2] WAVM[3] ChakraCore[4] SpiderMonkey[5]
v128.load -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
v128.load8x8_s -msimd128 :heavy_check_mark: :heavy_check_mark:
v128.load8x8_u -msimd128 :heavy_check_mark: :heavy_check_mark:
v128.load16x4_s -msimd128 :heavy_check_mark: :heavy_check_mark:
v128.load16x4_u -msimd128 :heavy_check_mark: :heavy_check_mark:
v128.load32x2_s -msimd128 :heavy_check_mark: :heavy_check_mark:
v128.load32x2_u -msimd128 :heavy_check_mark: :heavy_check_mark:
v128.load8_splat -msimd128 :heavy_check_mark: :heavy_check_mark:
v128.load16_splat -msimd128 :heavy_check_mark: :heavy_check_mark:
v128.load32_splat -msimd128 :heavy_check_mark: :heavy_check_mark:
v128.load64_splat -msimd128 :heavy_check_mark: :heavy_check_mark:
v128.store -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
v128.const -munimplemented-simd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i8x16.shuffle -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i8x16.swizzle -msimd128 :heavy_check_mark: :heavy_check_mark:
i8x16.splat -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i16x8.splat -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i32x4.splat -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i64x2.splat -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f32x4.splat -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f64x2.splat -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i8x16.extract_lane_s -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i8x16.extract_lane_u -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i8x16.replace_lane -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i16x8.extract_lane_s -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i16x8.extract_lane_u -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i16x8.replace_lane -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i32x4.extract_lane -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i32x4.replace_lane -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i64x2.extract_lane -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i64x2.replace_lane -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f32x4.extract_lane -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f32x4.replace_lane -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f64x2.extract_lane -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f64x2.replace_lane -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i8x16.eq -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i8x16.ne -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i8x16.lt_s -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i8x16.lt_u -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i8x16.gt_s -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i8x16.gt_u -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i8x16.le_s -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i8x16.le_u -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i8x16.ge_s -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i8x16.ge_u -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i16x8.eq -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i16x8.ne -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i16x8.lt_s -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i16x8.lt_u -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i16x8.gt_s -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i16x8.gt_u -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i16x8.le_s -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i16x8.le_u -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i16x8.ge_s -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i16x8.ge_u -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i32x4.eq -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i32x4.ne -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i32x4.lt_s -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i32x4.lt_u -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i32x4.gt_s -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i32x4.gt_u -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i32x4.le_s -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i32x4.le_u -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i32x4.ge_s -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i32x4.ge_u -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f32x4.eq -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f32x4.ne -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f32x4.lt -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f32x4.gt -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f32x4.le -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f32x4.ge -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f64x2.eq -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f64x2.ne -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f64x2.lt -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f64x2.gt -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f64x2.le -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f64x2.ge -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
v128.not -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
v128.and -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
v128.andnot -msimd128 :heavy_check_mark: :heavy_check_mark:
v128.or -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
v128.xor -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
v128.bitselect -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i8x16.abs -msimd128 :heavy_check_mark: :heavy_check_mark:
i8x16.neg -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i8x16.all_true -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i8x16.bitmask -munimplemented-simd128 :heavy_check_mark: :heavy_check_mark:
i8x16.narrow_i16x8_s -msimd128 :heavy_check_mark: :heavy_check_mark:
i8x16.narrow_i16x8_u -msimd128 :heavy_check_mark: :heavy_check_mark:
i8x16.shl -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i8x16.shr_s -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i8x16.shr_u -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i8x16.add -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i8x16.add_sat_s -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i8x16.add_sat_u -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i8x16.sub -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i8x16.sub_sat_s -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i8x16.sub_sat_u -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i8x16.min_s -msimd128 :heavy_check_mark: :heavy_check_mark:
i8x16.min_u -msimd128 :heavy_check_mark: :heavy_check_mark:
i8x16.max_s -msimd128 :heavy_check_mark: :heavy_check_mark:
i8x16.max_u -msimd128 :heavy_check_mark: :heavy_check_mark:
i8x16.avgr_u -msimd128 :heavy_check_mark: :heavy_check_mark:
i16x8.abs -msimd128 :heavy_check_mark: :heavy_check_mark:
i16x8.neg -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i16x8.all_true -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i16x8.bitmask -munimplemented-simd128 :heavy_check_mark: :heavy_check_mark:
i16x8.narrow_i32x4_s -msimd128 :heavy_check_mark: :heavy_check_mark:
i16x8.narrow_i32x4_u -msimd128 :heavy_check_mark: :heavy_check_mark:
i16x8.extend_low_i8x16_s -msimd128 :heavy_check_mark: :heavy_check_mark:
i16x8.extend_high_i8x16_s -msimd128 :heavy_check_mark: :heavy_check_mark:
i16x8.extend_low_i8x16_u -msimd128 :heavy_check_mark: :heavy_check_mark:
i16x8.extend_high_i8x16_u -msimd128 :heavy_check_mark: :heavy_check_mark:
i16x8.shl -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i16x8.shr_s -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i16x8.shr_u -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i16x8.add -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i16x8.add_sat_s -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i16x8.add_sat_u -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i16x8.sub -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i16x8.sub_sat_s -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i16x8.sub_sat_u -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i16x8.mul -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i16x8.min_s -msimd128 :heavy_check_mark: :heavy_check_mark:
i16x8.min_u -msimd128 :heavy_check_mark: :heavy_check_mark:
i16x8.max_s -msimd128 :heavy_check_mark: :heavy_check_mark:
i16x8.max_u -msimd128 :heavy_check_mark: :heavy_check_mark:
i16x8.avgr_u -msimd128 :heavy_check_mark: :heavy_check_mark:
i16x8.q15mulr_sat_s :heavy_check_mark: :heavy_check_mark:
i32x4.abs -msimd128 :heavy_check_mark: :heavy_check_mark:
i32x4.neg -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i32x4.all_true -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i32x4.bitmask -munimplemented-simd128 :heavy_check_mark: :heavy_check_mark:
i32x4.extend_low_i16x8_s -msimd128 :heavy_check_mark: :heavy_check_mark:
i32x4.extend_high_i16x8_s -msimd128 :heavy_check_mark: :heavy_check_mark:
i32x4.extend_low_i16x8_u -msimd128 :heavy_check_mark: :heavy_check_mark:
i32x4.extend_high_i16x8_u -msimd128 :heavy_check_mark: :heavy_check_mark:
i32x4.shl -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i32x4.shr_s -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i32x4.shr_u -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i32x4.add -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i32x4.sub -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i32x4.mul -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i32x4.min_s -msimd128 :heavy_check_mark: :heavy_check_mark:
i32x4.min_u -msimd128 :heavy_check_mark: :heavy_check_mark:
i32x4.max_s -msimd128 :heavy_check_mark: :heavy_check_mark:
i32x4.max_u -msimd128 :heavy_check_mark: :heavy_check_mark:
i32x4.dot_i16x8_s :heavy_check_mark: :heavy_check_mark:
i64x2.eq :heavy_check_mark: :heavy_check_mark:
i64x2.abs :heavy_check_mark: :heavy_check_mark:
i64x2.neg -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i64x2.all_true :heavy_check_mark: :heavy_check_mark:
i64x2.bitmask :heavy_check_mark: :heavy_check_mark:
i64x2.shl -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i64x2.shr_s -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i64x2.shr_u -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i64x2.add -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i64x2.sub -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i64x2.mul -msimd128 :heavy_check_mark: :heavy_check_mark:
i64x2.extend_low_i32x4_s :heavy_check_mark: :heavy_check_mark:
i64x2.extend_high_i32x4_s :heavy_check_mark: :heavy_check_mark:
i64x2.extend_low_i32x4_u :heavy_check_mark: :heavy_check_mark:
i64x2.extend_high_i32x4_u :heavy_check_mark: :heavy_check_mark:
f32x4.abs -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f32x4.neg -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f32x4.sqrt -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f32x4.add -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f32x4.sub -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f32x4.mul -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f32x4.div -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f32x4.min -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f32x4.max -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f32x4.pmin :heavy_check_mark: :heavy_check_mark:
f32x4.pmax :heavy_check_mark: :heavy_check_mark:
f32x4.ceil :heavy_check_mark: :heavy_check_mark:
f32x4.floor :heavy_check_mark: :heavy_check_mark:
f32x4.trunc :heavy_check_mark: :heavy_check_mark:
f32x4.nearest :heavy_check_mark: :heavy_check_mark:
f64x2.abs -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f64x2.neg -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f64x2.sqrt -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f64x2.add -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f64x2.sub -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f64x2.mul -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f64x2.div -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f64x2.min -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f64x2.max -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f64x2.pmin :heavy_check_mark: :heavy_check_mark:
f64x2.pmax :heavy_check_mark: :heavy_check_mark:
f64x2.ceil :heavy_check_mark: :heavy_check_mark:
f64x2.floor :heavy_check_mark: :heavy_check_mark:
f64x2.trunc :heavy_check_mark: :heavy_check_mark:
f64x2.nearest :heavy_check_mark: :heavy_check_mark:
i32x4.trunc_sat_f32x4_s -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
i32x4.trunc_sat_f32x4_u -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f32x4.convert_i32x4_s -msimd128 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
f32x4.convert_i32x4_u -msimd128 :heavy_check_mark: :heavy_check_mark:
v128.load32_zero :heavy_check_mark: :heavy_check_mark:
v128.load64_zero :heavy_check_mark: :heavy_check_mark:
i16x8.extmul_low_i8x16_s :heavy_check_mark: :heavy_check_mark:
i16x8.extmul_high_i8x16_s :heavy_check_mark: :heavy_check_mark:
i16x8.extmul_low_i8x16_u :heavy_check_mark: :heavy_check_mark:
i16x8.extmul_high_i8x16_u :heavy_check_mark: :heavy_check_mark:
i32x4.extmul_low_i16x8_s :heavy_check_mark: :heavy_check_mark:
i32x4.extmul_high_i16x8_s :heavy_check_mark: :heavy_check_mark:
i32x4.extmul_low_i16x8_u :heavy_check_mark: :heavy_check_mark:
i32x4.extmul_high_i16x8_u :heavy_check_mark: :heavy_check_mark:
i64x2.extmul_low_i32x4_s :heavy_check_mark: :heavy_check_mark:
i64x2.extmul_high_i32x4_s :heavy_check_mark: :heavy_check_mark:
i64x2.extmul_low_i32x4_u :heavy_check_mark: :heavy_check_mark:
i64x2.extmul_high_i32x4_u :heavy_check_mark: :heavy_check_mark:
v128.any_true :heavy_check_mark: :heavy_check_mark:
v128.load8_lane :heavy_check_mark: :heavy_check_mark:
v128.load16_lane :heavy_check_mark: :heavy_check_mark:
v128.load32_lane :heavy_check_mark: :heavy_check_mark:
v128.load64_lane :heavy_check_mark: :heavy_check_mark:
v128.store8_lane :heavy_check_mark: :heavy_check_mark:
v128.store16_lane :heavy_check_mark: :heavy_check_mark:
v128.store32_lane :heavy_check_mark: :heavy_check_mark:
v128.store64_lane :heavy_check_mark: :heavy_check_mark:
i64x2.ne :heavy_check_mark: :heavy_check_mark:
f64x2.convert_low_i32x4_s :heavy_check_mark: :heavy_check_mark:
f64x2.convert_low_i32x4_u :heavy_check_mark: :heavy_check_mark:
i32x4.trunc_sat_f64x2_s_zero :heavy_check_mark: :heavy_check_mark:
i32x4.trunc_sat_f64x2_u_zero :heavy_check_mark: :heavy_check_mark:
f32x4.demote_f64x2_zero :heavy_check_mark: :heavy_check_mark:
f64x2.promote_low_f32x4 :heavy_check_mark: :heavy_check_mark:
i8x16.popcnt :heavy_check_mark: :heavy_check_mark:
i16x8.extadd_pairwise_i8x16_s :heavy_check_mark: :heavy_check_mark:
i16x8.extadd_pairwise_i8x16_u :heavy_check_mark: :heavy_check_mark:
i32x4.extadd_pairwise_i16x8_s :heavy_check_mark: :heavy_check_mark:
i32x4.extadd_pairwise_i16x8_u :heavy_check_mark: :heavy_check_mark:
i64x2.lt_s :heavy_check_mark: :heavy_check_mark:
i64x2.gt_s :heavy_check_mark: :heavy_check_mark:
i64x2.le_s :heavy_check_mark: :heavy_check_mark:
i64x2.ge_s :heavy_check_mark: :heavy_check_mark:

[1] Tip of tree LLVM as of May 20, 2020

[2] V8 9.1.0.

[3] Not known to be updated after latest renumbering. Requires flag --enable simd

[4] Only in 1.12.* (development branch). Requires (case-insensitive) flag -wasmsimd

[5] Firefox x64/x86 (SSE4.1+ only) from FF89, ARM64 from FF90. Earlier versions control in about:config under javascript.options.wasm_simd