| v128.const |
i8x16 (=v128), i16x8, i32x4, i64x2, f32x4, f64x2 |
done |
|
|
|
| i8x16.splat |
v128.splat<i8> + alias |
done |
| i16x8.splat |
v128.splat<i16> + alias |
done |
| i32x4.splat |
v128.splat<i32> + alias |
done |
| i64x2.splat |
v128.splat<i64> + alias |
done |
| f32x4.splat |
v128.splat<f32> + alias |
done |
| f64x2.splat |
v128.splat<f64> + alias |
done |
|
|
|
| v128.load |
i8x16 (=v128), i16x8, i32x4, i64x2, f32x4, f64x2 |
done |
|
|
|
| v128.store |
i8x16 (=v128), i16x8, i32x4, i64x2, f32x4, f64x2 |
done |
|
|
|
| i8x16.extract_lane_s |
v128.extract_lane<i8> + alias |
done |
| i8x16.extract_lane_u |
v128.extract_lane<u8> + alias |
done |
| i16x8.extract_lane_s |
v128.extract_lane<i16> + alias |
done |
| i16x8.extract_lane_u |
v128.extract_lane<u16> + alias |
done |
| i32x4.extract_lane |
v128.extract_lane<i/u32> + alias |
done |
| i64x2.extract_lane |
v128.extract_lane<i/u64> + alias |
done |
| f32x4.extract_lane |
v128.extract_lane<f32> + alias |
done |
| f64x2.extract_lane |
v128.extract_lane<f64> + alias |
done |
|
|
|
| i8x16.replace_lane |
v128.replace_lane<i/u8> + alias |
done |
| i16x8.replace_lane |
v128.replace_lane<i/u16> + alias |
done |
| i32x4.replace_lane |
v128.replace_lane<i/u32> + alias |
done |
| i64x2.replace_lane |
v128.replace_lane<i/u64> + alias |
done |
| f32x4.replace_lane |
v128.replace_lane<f32> + alias |
done |
| f64x2.replace_lane |
v128.replace_lane<f64> + alias |
done |
|
|
|
| i8x16.shuffle |
v128.shuffle<i/u8/16/32/f32/64> + aliases |
done |
|
|
|
| i8x16.bitselect |
v128.bitselect<i/u8/16/32/f32/64> + aliases |
done |
|
|
|
| i8x16.any_true |
v128.any_true<i/u8> + alias |
done |
| i16x8.any_true |
v128.any_true<i/u16> + alias |
done |
| i32x4.any_true |
v128.any_true<i/u32> + alias |
done |
| i64x2.any_true |
v128.any_true<i/u64> + alias |
done |
|
|
|
| i8x16.all_true |
v128.all_true<i/u8> + alias |
done |
| i16x8.all_true |
v128.all_true<i/u16> + alias |
done |
| i32x4.all_true |
v128.all_true<i/u32> + alias |
done |
| i64x2.all_true |
v128.all_true<i/u64> + alias |
done |
|
|
|
| i8x16.shl |
v128.shl<i/u8> + alias |
done |
| i16x8.shl |
v128.shl<i/u16> + alias |
done |
| i32x4.shl |
v128.shl<i/u32> + alias |
done |
| i64x2.shl |
v128.shl<i/u64> + alias |
done |
|
|
|
| i8x16.shr |
v128.shr<i/u8> + alias |
done |
| i16x8.shr |
v128.shr<i/u16> + alias |
done |
| i32x4.shr |
v128.shr<i/u32> + alias |
done |
| i64x2.shr |
v128.shr<i/u64> + alias |
done |
|
|
|
| i8x16.and |
v128.and<i/u8> + alias |
done |
| i16x8.and |
v128.and<i/u16> + alias |
done |
| i32x4.and |
v128.and<i/u32> + alias |
done |
| i64x2.and |
v128.and<i/u64> + alias |
done |
|
|
|
| i8x16.or |
v128.or<i/u8> + alias |
done |
| i16x8.or |
v128.or<i/u16> + alias |
done |
| i32x4.or |
v128.or<i/u32> + alias |
done |
| i64x2.or |
v128.or<i/u64> + alias |
done |
|
|
|
| i8x16.xor |
v128.xor<i/u8> + alias |
done |
| i16x8.xor |
v128.xor<i/u16> + alias |
done |
| i32x4.xor |
v128.xor<i/u32> + alias |
done |
| i64x2.xor |
v128.xor<i/u64> + alias |
done |
|
|
|
| i8x16.not |
v128.not<i/u8> + alias |
done |
| i16x8.not |
v128.not<i/u16> + alias |
done |
| i32x4.not |
v128.not<i/u32> + alias |
done |
| i64x2.not |
v128.not<i/u64> + alias |
done |
|
|
|
| i8x16.neg |
v128.neg<i/u8> + alias |
done |
| i16x8.neg |
v128.neg<i/u16> + alias |
done |
| i32x4.neg |
v128.neg<i/u32> + alias |
done |
| i64x2.neg |
v128.neg<i/u64> + alias |
done |
| f32x4.neg |
v128.neg<f32> + alias |
done |
| f64x2.neg |
v128.neg<f64> + alias |
done |
|
|
|
| i8x16.add |
v128.add<i/u8> + alias |
done |
| i16x8.add |
v128.add<i/u16> + alias |
done |
| i32x4.add |
v128.add<i/u32> + alias |
done |
| i64x2.add |
v128.add<i/u64> + alias |
done |
| f32x4.add |
v128.add<f32> + alias |
done |
| f64x2.add |
v128.add<f64> + alias |
done |
|
|
|
| i8x16.sub |
v128.sub<i/u8> + alias |
done |
| i16x8.sub |
v128.sub<i/u16> + alias |
done |
| i32x4.sub |
v128.sub<i/u32> + alias |
done |
| i64x2.sub |
v128.sub<i/u64> + alias |
done |
| f32x4.sub |
v128.sub<f32> + alias |
done |
| f64x2.sub |
v128.sub<f64> + alias |
done |
|
|
|
| i8x16.mul |
v128.mul<i/u8> + alias |
done |
| i16x8.mul |
v128.mul<i/u16> + alias |
done |
| i32x4.mul |
v128.mul<i/u32> + alias |
done |
| i64x2.mul |
v128.mul<i/u64> + alias |
done |
| f32x4.mul |
v128.mul<f32> + alias |
done |
| f64x2.mul |
v128.mul<f64> + alias |
done |
|
|
|
| f32x4.div |
v128.div<f32> + alias |
done |
| f64x2.div |
v128.div<f64> + alias |
done |
|
|
|
| f32x4.min |
v128.min<f32> + alias |
done |
| f64x2.min |
v128.min<f64> + alias |
done |
|
|
|
| f32x4.max |
v128.max<f32> + alias |
done |
| f64x2.max |
v128.max<f64> + alias |
done |
|
|
|
| i8x16.add_saturate |
v128.add_saturate<i/u8> + alias |
done |
| i16x8.add_saturate |
v128.add_saturate<i/u16> + alias |
done |
|
|
|
| i8x16.sub_saturate |
v128.sub_saturate<i/u8> + alias |
done |
| i16x8.sub_saturate |
v128.sub_saturate<i/u16> + alias |
done |
|
|
|
| ... |
... |
todo |
#508 adds an initial set of SIMD operations as built-in functions that map directly to WebAssembly instructions. Given those as a starting point, it should be relatively straight forward to add the remaining ones.
See also: https://github.com/WebAssembly/simd/blob/master/proposals/simd/SIMD.md