Skip to content
This repository was archived by the owner on Dec 22, 2021. It is now read-only.

Commit ca03287

Browse files
authored
ImplementationStatus.md (#73)
A centralized location for seeing how up-to-date various implementations are.
1 parent 7f4d54d commit ca03287

File tree

1 file changed

+147
-0
lines changed

1 file changed

+147
-0
lines changed
Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
| Instruction | LLVM[1] | V8[2] |
2+
| --------------------------|---------------------------|--------------------|
3+
| `v128.load` | `-msimd128` | :heavy_check_mark: |
4+
| `v128.store` | `-msimd128` | :heavy_check_mark: |
5+
| `v128.const` | `-munimplemented-simd128` | |
6+
| `i8x16.splat` | `-msimd128` | :heavy_check_mark: |
7+
| `i8x16.extract_lane_s` | `-msimd128` | :heavy_check_mark: |
8+
| `i8x16.extract_lane_u` | `-munimplemented-simd128` | |
9+
| `i8x16.replace_lane` | `-msimd128` | :heavy_check_mark: |
10+
| `i16x8.splat` | `-msimd128` | :heavy_check_mark: |
11+
| `i16x8.extract_lane_s` | `-msimd128` | :heavy_check_mark: |
12+
| `i16x8.extract_lane_u` | `-munimplemented-simd128` | |
13+
| `i16x8.replace_lane` | `-msimd128` | :heavy_check_mark: |
14+
| `i32x4.splat` | `-msimd128` | :heavy_check_mark: |
15+
| `i32x4.extract_lane` | `-msimd128` | :heavy_check_mark: |
16+
| `i32x4.replace_lane` | `-msimd128` | :heavy_check_mark: |
17+
| `i64x2.splat` | `-munimplemented-simd128` | |
18+
| `i64x2.extract_lane` | `-munimplemented-simd128` | |
19+
| `i64x2.replace_lane` | `-munimplemented-simd128` | |
20+
| `f32x4.splat` | `-msimd128` | :heavy_check_mark: |
21+
| `f32x4.extract_lane` | `-msimd128` | :heavy_check_mark: |
22+
| `f32x4.replace_lane` | `-msimd128` | :heavy_check_mark: |
23+
| `f64x2.splat` | `-munimplemented-simd128` | |
24+
| `f64x2.extract_lane` | `-munimplemented-simd128` | |
25+
| `f64x2.replace_lane` | `-munimplemented-simd128` | |
26+
| `i8x16.eq` | `-msimd128` | :heavy_check_mark: |
27+
| `i8x16.ne` | `-msimd128` | :heavy_check_mark: |
28+
| `i8x16.lt_s` | `-msimd128` | :heavy_check_mark: |
29+
| `i8x16.lt_u` | `-msimd128` | :heavy_check_mark: |
30+
| `i8x16.gt_s` | `-msimd128` | :heavy_check_mark: |
31+
| `i8x16.gt_u` | `-msimd128` | :heavy_check_mark: |
32+
| `i8x16.le_s` | `-msimd128` | :heavy_check_mark: |
33+
| `i8x16.le_u` | `-msimd128` | :heavy_check_mark: |
34+
| `i8x16.ge_s` | `-msimd128` | :heavy_check_mark: |
35+
| `i8x16.ge_u` | `-msimd128` | :heavy_check_mark: |
36+
| `i16x8.eq` | `-msimd128` | :heavy_check_mark: |
37+
| `i16x8.ne` | `-msimd128` | :heavy_check_mark: |
38+
| `i16x8.lt_s` | `-msimd128` | :heavy_check_mark: |
39+
| `i16x8.lt_u` | `-msimd128` | :heavy_check_mark: |
40+
| `i16x8.gt_s` | `-msimd128` | :heavy_check_mark: |
41+
| `i16x8.gt_u` | `-msimd128` | :heavy_check_mark: |
42+
| `i16x8.le_s` | `-msimd128` | :heavy_check_mark: |
43+
| `i16x8.le_u` | `-msimd128` | :heavy_check_mark: |
44+
| `i16x8.ge_s` | `-msimd128` | :heavy_check_mark: |
45+
| `i16x8.ge_u` | `-msimd128` | :heavy_check_mark: |
46+
| `i32x4.eq` | `-msimd128` | :heavy_check_mark: |
47+
| `i32x4.ne` | `-msimd128` | :heavy_check_mark: |
48+
| `i32x4.lt_s` | `-msimd128` | :heavy_check_mark: |
49+
| `i32x4.lt_u` | `-msimd128` | :heavy_check_mark: |
50+
| `i32x4.gt_s` | `-msimd128` | :heavy_check_mark: |
51+
| `i32x4.gt_u` | `-msimd128` | :heavy_check_mark: |
52+
| `i32x4.le_s` | `-msimd128` | :heavy_check_mark: |
53+
| `i32x4.le_u` | `-msimd128` | :heavy_check_mark: |
54+
| `i32x4.ge_s` | `-msimd128` | :heavy_check_mark: |
55+
| `i32x4.ge_u` | `-msimd128` | :heavy_check_mark: |
56+
| `f32x4.eq` | `-msimd128` | :heavy_check_mark: |
57+
| `f32x4.ne` | `-msimd128` | :heavy_check_mark: |
58+
| `f32x4.lt` | `-msimd128` | :heavy_check_mark: |
59+
| `f32x4.gt` | `-msimd128` | :heavy_check_mark: |
60+
| `f32x4.le` | `-msimd128` | :heavy_check_mark: |
61+
| `f32x4.ge` | `-msimd128` | :heavy_check_mark: |
62+
| `f64x2.eq` | `-munimplemented-simd128` | |
63+
| `f64x2.ne` | `-munimplemented-simd128` | |
64+
| `f64x2.lt` | `-munimplemented-simd128` | |
65+
| `f64x2.gt` | `-munimplemented-simd128` | |
66+
| `f64x2.le` | `-munimplemented-simd128` | |
67+
| `f64x2.ge` | `-munimplemented-simd128` | |
68+
| `v128.not` | `-msimd128` | :heavy_check_mark: |
69+
| `v128.and` | `-msimd128` | :heavy_check_mark: |
70+
| `v128.or` | `-msimd128` | :heavy_check_mark: |
71+
| `v128.xor` | `-msimd128` | :heavy_check_mark: |
72+
| `v128.bitselect` | `-msimd128` | :heavy_check_mark: |
73+
| `i8x16.neg` | `-msimd128` | :heavy_check_mark: |
74+
| `i8x16.any_true` | `-msimd128` | :heavy_check_mark: |
75+
| `i8x16.all_true` | `-msimd128` | :heavy_check_mark: |
76+
| `i8x16.shl` | `-munimplemented-simd128` | |
77+
| `i8x16.shr_s` | `-munimplemented-simd128` | |
78+
| `i8x16.shr_u` | `-munimplemented-simd128` | |
79+
| `i8x16.add` | `-msimd128` | :heavy_check_mark: |
80+
| `i8x16.add_saturate_s` | `-msimd128` | :heavy_check_mark: |
81+
| `i8x16.add_saturate_u` | `-msimd128` | :heavy_check_mark: |
82+
| `i8x16.sub` | `-msimd128` | :heavy_check_mark: |
83+
| `i8x16.sub_saturate_s` | `-msimd128` | :heavy_check_mark: |
84+
| `i8x16.sub_saturate_u` | `-msimd128` | :heavy_check_mark: |
85+
| `i8x16.mul` | `-msimd128` | :heavy_check_mark: |
86+
| `i16x8.neg` | `-msimd128` | :heavy_check_mark: |
87+
| `i16x8.any_true` | `-msimd128` | :heavy_check_mark: |
88+
| `i16x8.all_true` | `-msimd128` | :heavy_check_mark: |
89+
| `i16x8.shl` | `-munimplemented-simd128` | |
90+
| `i16x8.shr_s` | `-munimplemented-simd128` | |
91+
| `i16x8.shr_u` | `-munimplemented-simd128` | |
92+
| `i16x8.add` | `-msimd128` | :heavy_check_mark: |
93+
| `i16x8.add_saturate_s` | `-msimd128` | :heavy_check_mark: |
94+
| `i16x8.add_saturate_u` | `-msimd128` | :heavy_check_mark: |
95+
| `i16x8.sub` | `-msimd128` | :heavy_check_mark: |
96+
| `i16x8.sub_saturate_s` | `-msimd128` | :heavy_check_mark: |
97+
| `i16x8.sub_saturate_u` | `-msimd128` | :heavy_check_mark: |
98+
| `i16x8.mul` | `-msimd128` | :heavy_check_mark: |
99+
| `i32x4.neg` | `-msimd128` | :heavy_check_mark: |
100+
| `i32x4.any_true` | `-msimd128` | :heavy_check_mark: |
101+
| `i32x4.all_true` | `-msimd128` | :heavy_check_mark: |
102+
| `i32x4.shl` | `-munimplemented-simd128` | |
103+
| `i32x4.shr_s` | `-munimplemented-simd128` | |
104+
| `i32x4.shr_u` | `-munimplemented-simd128` | |
105+
| `i32x4.add` | `-msimd128` | :heavy_check_mark: |
106+
| `i32x4.sub` | `-msimd128` | :heavy_check_mark: |
107+
| `i32x4.mul` | `-msimd128` | :heavy_check_mark: |
108+
| `i64x2.neg` | `-munimplemented-simd128` | |
109+
| `i64x2.any_true` | `-munimplemented-simd128` | |
110+
| `i64x2.all_true` | `-munimplemented-simd128` | |
111+
| `i64x2.shl` | `-munimplemented-simd128` | |
112+
| `i64x2.shr_s` | `-munimplemented-simd128` | |
113+
| `i64x2.shr_u` | `-munimplemented-simd128` | |
114+
| `i64x2.add` | `-munimplemented-simd128` | |
115+
| `i64x2.sub` | `-munimplemented-simd128` | |
116+
| `f32x4.abs` | `-msimd128` | :heavy_check_mark: |
117+
| `f32x4.neg` | `-msimd128` | :heavy_check_mark: |
118+
| `f32x4.sqrt` | `-munimplemented-simd128` | |
119+
| `f32x4.add` | `-msimd128` | :heavy_check_mark: |
120+
| `f32x4.sub` | `-msimd128` | :heavy_check_mark: |
121+
| `f32x4.mul` | `-msimd128` | :heavy_check_mark: |
122+
| `f32x4.div` | `-msimd128` | :heavy_check_mark: |
123+
| `f32x4.min` | `-msimd128` | :heavy_check_mark: |
124+
| `f32x4.max` | `-msimd128` | :heavy_check_mark: |
125+
| `f64x2.abs` | `-munimplemented-simd128` | |
126+
| `f64x2.neg` | `-munimplemented-simd128` | |
127+
| `f64x2.sqrt` | `-munimplemented-simd128` | |
128+
| `f64x2.add` | `-munimplemented-simd128` | |
129+
| `f64x2.sub` | `-munimplemented-simd128` | |
130+
| `f64x2.mul` | `-munimplemented-simd128` | |
131+
| `f64x2.div` | `-munimplemented-simd128` | |
132+
| `f64x2.min` | `-munimplemented-simd128` | |
133+
| `f64x2.max` | `-munimplemented-simd128` | |
134+
| `i32x4.trunc_s/f32x4:sat` | `-msimd128` | :heavy_check_mark: |
135+
| `i32x4.trunc_u/f32x4:sat` | `-msimd128` | :heavy_check_mark: |
136+
| `i64x2.trunc_s/f64x2:sat` | `-munimplemented-simd128` | |
137+
| `i64x2.trunc_u/f64x2:sat` | `-munimplemented-simd128` | |
138+
| `f32x4.convert_s/i32x4` | `-msimd128` | :heavy_check_mark: |
139+
| `f32x4.convert_u/i32x4` | `-msimd128` | :heavy_check_mark: |
140+
| `f64x2.convert_s/i64x2` | `-munimplemented-simd128` | |
141+
| `f64x2.convert_u/i64x2` | `-munimplemented-simd128` | |
142+
| `v8x16.shuffle1` | | |
143+
| `v8x16.shuffle2_imm` | | |
144+
145+
[1] Tip of tree LLVM as of April 24, 2019
146+
147+
[2] Tested on V8 7.5.0 (candidate). Requires flag `--experimental-wasm-simd`

0 commit comments

Comments
 (0)