Skip to content

Commit c8ef5e8

Browse files
ngzhianmarijnh
authored andcommitted
[wast mode] Complete SIMD instructions
This finished the set of SIMD instructions 178 of them in total, also sorted tests by their ordering in https://github.com/WebAssembly/simd/blob/master/proposals/simd/BinarySIMD.md.
1 parent ae507dc commit c8ef5e8

File tree

2 files changed

+34
-5
lines changed

2 files changed

+34
-5
lines changed

mode/wast/test.js

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,16 @@
141141

142142
MT('simd-instructions',
143143
'[keyword v128.load] [keyword offset]=[number 32] [keyword align]=[number 4]',
144+
'[keyword i16x8.load8x8_s] [keyword offset]=[number 64] [keyword align]=[number 0]',
145+
'[keyword i16x8.load8x8_u] [keyword offset]=[number 64] [keyword align]=[number 0]',
146+
'[keyword i32x4.load16x4_s] [keyword offset]=[number 64] [keyword align]=[number 0]',
147+
'[keyword i32x4.load16x4_u] [keyword offset]=[number 64] [keyword align]=[number 0]',
148+
'[keyword i64x2.load32x2_s] [keyword offset]=[number 64] [keyword align]=[number 0]',
149+
'[keyword i64x2.load32x2_u] [keyword offset]=[number 64] [keyword align]=[number 0]',
150+
'[keyword v8x16.load_splat] [keyword offset]=[number 64] [keyword align]=[number 0]',
151+
'[keyword v16x8.load_splat] [keyword offset]=[number 64] [keyword align]=[number 0]',
152+
'[keyword v32x4.load_splat] [keyword offset]=[number 64] [keyword align]=[number 0]',
153+
'[keyword v64x2.load_splat] [keyword offset]=[number 64] [keyword align]=[number 0]',
144154
'[keyword v128.store] [keyword offset]=[number 32] [keyword align]=[number 4]',
145155
'[keyword v128.const] [number 0] [number 1] [number 2] [number 3] [number 4] [number 5] [number 6] [number 7] [number 8] [number 9] [number 10] [number 11] [number 12] [number 13] [number 14] [number 15]',
146156
'[keyword v8x16.shuffle] [number 0] [number 1] [number 2] [number 3] [number 4] [number 5] [number 6] [number 7] [number 8] [number 9] [number 10] [number 11] [number 12] [number 13] [number 14] [number 15]',
@@ -208,8 +218,8 @@
208218
'[keyword f64x2.le]',
209219
'[keyword f64x2.ge]',
210220
'[keyword v128.not]',
211-
'[keyword v128.andnot]',
212221
'[keyword v128.and]',
222+
'[keyword v128.andnot]',
213223
'[keyword v128.or]',
214224
'[keyword v128.xor]',
215225
'[keyword v128.bitselect]',
@@ -218,6 +228,8 @@
218228
'[keyword i8x16.any_true]',
219229
'[keyword i8x16.all_true]',
220230
'[keyword i8x16.bitmask]',
231+
'[keyword i8x16.narrow_i16x8_s]',
232+
'[keyword i8x16.narrow_i16x8_u]',
221233
'[keyword i8x16.shl]',
222234
'[keyword i8x16.shr_s]',
223235
'[keyword i8x16.shr_u]',
@@ -237,6 +249,12 @@
237249
'[keyword i16x8.any_true]',
238250
'[keyword i16x8.all_true]',
239251
'[keyword i16x8.bitmask]',
252+
'[keyword i16x8.narrow_i32x4_s]',
253+
'[keyword i16x8.narrow_i32x4_u]',
254+
'[keyword i16x8.widen_low_i8x16_s]',
255+
'[keyword i16x8.widen_high_i8x16_s]',
256+
'[keyword i16x8.widen_low_i8x16_u]',
257+
'[keyword i16x8.widen_high_i8x16_u]',
240258
'[keyword i16x8.shl]',
241259
'[keyword i16x8.shr_s]',
242260
'[keyword i16x8.shr_u]',
@@ -246,31 +264,38 @@
246264
'[keyword i16x8.sub]',
247265
'[keyword i16x8.sub_saturate_s]',
248266
'[keyword i16x8.sub_saturate_u]',
267+
'[keyword i16x8.mul]',
249268
'[keyword i16x8.min_s]',
250269
'[keyword i16x8.min_u]',
251270
'[keyword i16x8.max_s]',
252271
'[keyword i16x8.max_u]',
253272
'[keyword i16x8.avgr_u]',
254-
'[keyword i32x4.add]',
255273
'[keyword i32x4.abs]',
256274
'[keyword i32x4.neg]',
257275
'[keyword i32x4.any_true]',
258276
'[keyword i32x4.all_true]',
259277
'[keyword i32x4.bitmask]',
278+
'[keyword i32x4.widen_low_i16x8_s]',
279+
'[keyword i32x4.widen_high_i16x8_s]',
280+
'[keyword i32x4.widen_low_i16x8_u]',
281+
'[keyword i32x4.widen_high_i16x8_u]',
260282
'[keyword i32x4.shl]',
261283
'[keyword i32x4.shr_s]',
262284
'[keyword i32x4.shr_u]',
285+
'[keyword i32x4.add]',
263286
'[keyword i32x4.sub]',
287+
'[keyword i32x4.mul]',
264288
'[keyword i32x4.min_s]',
265289
'[keyword i32x4.min_u]',
266290
'[keyword i32x4.max_s]',
267291
'[keyword i32x4.max_u]',
268-
'[keyword i64x2.add]',
269292
'[keyword i64x2.neg]',
270293
'[keyword i64x2.shl]',
271294
'[keyword i64x2.shr_s]',
272295
'[keyword i64x2.shr_u]',
296+
'[keyword i64x2.add]',
273297
'[keyword i64x2.sub]',
298+
'[keyword i64x2.mul]',
274299
'[keyword f32x4.abs]',
275300
'[keyword f32x4.neg]',
276301
'[keyword f32x4.sqrt]',
@@ -288,5 +313,9 @@
288313
'[keyword f64x2.mul]',
289314
'[keyword f64x2.div]',
290315
'[keyword f64x2.min]',
291-
'[keyword f64x2.max]');
316+
'[keyword f64x2.max]',
317+
'[keyword i32x4.trunc_sat_f32x4_s]',
318+
'[keyword i32x4.trunc_sat_f32x4_u]',
319+
'[keyword f32x4.convert_i32x4_s]',
320+
'[keyword f32x4.convert_i32x4_u]');
292321
})();

mode/wast/wast.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
CodeMirror.defineSimpleMode('wast', {
1515
start: [
1616
{regex: /[+\-]?(?:nan(?::0x[0-9a-fA-F]+)?|infinity|inf|0x[0-9a-fA-F]+\.?[0-9a-fA-F]*p[+\/-]?\d+|\d+(?:\.\d*)?[eE][+\-]?\d*|\d+\.\d*|0x[0-9a-fA-F]+|\d+)/, token: "number"},
17-
{regex: /mut|nop|block|if|then|else|loop|br_if|br_table|br|call(_indirect)?|drop|end|return(_call(_indirect)?)?|local\.(get|set|tee)|global\.(get|set)|i(32|64)\.(store(8|16)|(load(8|16)_[su]))|i64\.(load32_[su]|store32)|[fi](32|64)\.(const|load|store)|f(32|64)\.(abs|add|ceil|copysign|div|eq|floor|[gl][et]|max|min|mul|nearest|neg?|sqrt|sub|trunc)|i(32|64)\.(a[dn]d|c[lt]z|(div|rem)_[su]|eqz?|[gl][te]_[su]|mul|ne|popcnt|rot[lr]|sh(l|r_[su])|sub|x?or)|i64\.extend_[su]_i32|i32\.wrap_i64|i(32|64)\.trunc_f(32|64)_[su]|f(32|64)\.convert_i(32|64)_[su]|f64\.promote_f32|f32\.demote_f64|f32\.reinterpret_i32|i32\.reinterpret_f32|f64\.reinterpret_i64|i64\.reinterpret_f64|select|unreachable|current_memory|memory(\.((atomic\.(notify|wait(32|64)))|grow|size))?|type|func|param|result|local|global|module|table|start|elem|data|align|offset|import|export|i64\.atomic\.(load32_u|store32|rmw32\.(a[dn]d|sub|x?or|(cmp)?xchg)_u)|i(32|64)\.atomic\.(load((8|16)_u)?|store(8|16)?|rmw(\.(a[dn]d|sub|x?or|(cmp)?xchg)|(8|16)\.(a[dn]d|sub|x?or|(cmp)?xchg)_u))|v128\.(load|store|const|not|andnot|and|or|xor|bitselect)|i(8x16|16x8|32x4|64x2)\.(shl|shr_[su])|i(8x16|16x8)\.(extract_lane_[su]|((add|sub)_saturate_[su])|avgr_u)|(i(8x16|16x8|32x4|64x2)|f(32x4|64x2))\.(splat|replace_lane|neg|add|sub)|i(8x16|16x8|32x4)\.(eq|ne|([lg][te]_[su])|abs|any_true|all_true|bitmask|((min|max)_[su]))|f(32x4|64x2)\.(eq|ne|[lg][te]|abs|sqrt|mul|div|min|max)|[fi](32x4|64x2)\.extract_lane|v8x16\.(shuffle|swizzle)/, token: "keyword"},
17+
{regex: /mut|nop|block|if|then|else|loop|br_if|br_table|br|call(_indirect)?|drop|end|return(_call(_indirect)?)?|local\.(get|set|tee)|global\.(get|set)|i(32|64)\.(store(8|16)|(load(8|16)_[su]))|i64\.(load32_[su]|store32)|[fi](32|64)\.(const|load|store)|f(32|64)\.(abs|add|ceil|copysign|div|eq|floor|[gl][et]|max|min|mul|nearest|neg?|sqrt|sub|trunc)|i(32|64)\.(a[dn]d|c[lt]z|(div|rem)_[su]|eqz?|[gl][te]_[su]|mul|ne|popcnt|rot[lr]|sh(l|r_[su])|sub|x?or)|i64\.extend_[su]_i32|i32\.wrap_i64|i(32|64)\.trunc_f(32|64)_[su]|f(32|64)\.convert_i(32|64)_[su]|f64\.promote_f32|f32\.demote_f64|f32\.reinterpret_i32|i32\.reinterpret_f32|f64\.reinterpret_i64|i64\.reinterpret_f64|select|unreachable|current_memory|memory(\.((atomic\.(notify|wait(32|64)))|grow|size))?|type|func|param|result|local|global|module|table|start|elem|data|align|offset|import|export|i64\.atomic\.(load32_u|store32|rmw32\.(a[dn]d|sub|x?or|(cmp)?xchg)_u)|i(32|64)\.atomic\.(load((8|16)_u)?|store(8|16)?|rmw(\.(a[dn]d|sub|x?or|(cmp)?xchg)|(8|16)\.(a[dn]d|sub|x?or|(cmp)?xchg)_u))|v128\.(load|store|const|not|andnot|and|or|xor|bitselect)|i(8x16|16x8|32x4|64x2)\.(shl|shr_[su])|i(8x16|16x8)\.(extract_lane_[su]|((add|sub)_saturate_[su])|avgr_u)|(i(8x16|16x8|32x4|64x2)|f(32x4|64x2))\.(splat|replace_lane|neg|add|sub)|i(8x16|16x8|32x4)\.(eq|ne|([lg][te]_[su])|abs|any_true|all_true|bitmask|((min|max)_[su]))|f(32x4|64x2)\.(eq|ne|[lg][te]|abs|sqrt|mul|div|min|max)|[fi](32x4|64x2)\.extract_lane|v8x16\.(shuffle|swizzle)|i16x8\.(load8x8_[su]|narrow_i32x4_[su]|widen_(low|high)_i8x16_[su]|mul)|i32x4\.(load16x4_[su]|widen_(low|high)_i16x8_[su]|mul|trunc_sat_f32x4_[su])|i64x2\.(load32x2_[su]|mul)|(v(8x16|16x8|32x4|64x2)\.load_splat)|i8x16\.narrow_i16x8_[su]|f32x4\.convert_i32x4_[su]/, token: "keyword"},
1818
{regex: /\b(anyfunc|[fi](32|64))\b/, token: "atom"},
1919
{regex: /\$([a-zA-Z0-9_`\+\-\*\/\\\^~=<>!\?@#$%&|:\.]+)/, token: "variable-2"},
2020
{regex: /"(?:[^"\\\x00-\x1f\x7f]|\\[nt\\'"]|\\[0-9a-fA-F][0-9a-fA-F])*"/, token: "string"},

0 commit comments

Comments
 (0)