Skip to content

Commit cab432b

Browse files
ngzhianmarijnh
authored andcommitted
[wast mode] Add more SIMD instructions
Some arithmetic instructions, had to shuffle the regex a bit so that we will attempt to match i8x16.add_saturate_s first before i8x16.add. Full list available at: https://github.com/WebAssembly/simd/blob/master/proposals/simd/BinarySIMD.md
1 parent 4a36584 commit cab432b

2 files changed

Lines changed: 40 additions & 2 deletions

File tree

mode/wast/test.js

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,36 +201,74 @@
201201
'[keyword f32x4.gt]',
202202
'[keyword f32x4.le]',
203203
'[keyword f32x4.ge]',
204+
'[keyword f32x4.abs]',
205+
'[keyword f32x4.neg]',
204206
'[keyword f64x2.eq]',
205207
'[keyword f64x2.ne]',
206208
'[keyword f64x2.lt]',
207209
'[keyword f64x2.gt]',
208210
'[keyword f64x2.le]',
209211
'[keyword f64x2.ge]',
212+
'[keyword f64x2.abs]',
213+
'[keyword f64x2.neg]',
210214
'[keyword v128.not]',
211215
'[keyword v128.andnot]',
212216
'[keyword v128.and]',
213217
'[keyword v128.or]',
214218
'[keyword v128.xor]',
215219
'[keyword v128.bitselect]',
220+
'[keyword i8x16.abs]',
216221
'[keyword i8x16.neg]',
222+
'[keyword i8x16.any_true]',
223+
'[keyword i8x16.all_true]',
224+
'[keyword i8x16.bitmask]',
217225
'[keyword i8x16.shl]',
218226
'[keyword i8x16.shr_s]',
219227
'[keyword i8x16.shr_u]',
220228
'[keyword i8x16.add]',
229+
'[keyword i8x16.add_saturate_s]',
230+
'[keyword i8x16.add_saturate_u]',
221231
'[keyword i8x16.sub]',
222-
'[keyword i16x8.add]',
232+
'[keyword i8x16.sub_saturate_s]',
233+
'[keyword i8x16.sub_saturate_u]',
234+
'[keyword i8x16.min_s]',
235+
'[keyword i8x16.min_u]',
236+
'[keyword i8x16.max_s]',
237+
'[keyword i8x16.max_u]',
238+
'[keyword i8x16.avgr_u]',
239+
'[keyword i16x8.abs]',
223240
'[keyword i16x8.neg]',
241+
'[keyword i16x8.any_true]',
242+
'[keyword i16x8.all_true]',
243+
'[keyword i16x8.bitmask]',
224244
'[keyword i16x8.shl]',
225245
'[keyword i16x8.shr_s]',
226246
'[keyword i16x8.shr_u]',
247+
'[keyword i16x8.add]',
248+
'[keyword i16x8.add_saturate_s]',
249+
'[keyword i16x8.add_saturate_u]',
227250
'[keyword i16x8.sub]',
251+
'[keyword i16x8.sub_saturate_s]',
252+
'[keyword i16x8.sub_saturate_u]',
253+
'[keyword i16x8.min_s]',
254+
'[keyword i16x8.min_u]',
255+
'[keyword i16x8.max_s]',
256+
'[keyword i16x8.max_u]',
257+
'[keyword i16x8.avgr_u]',
228258
'[keyword i32x4.add]',
259+
'[keyword i32x4.abs]',
229260
'[keyword i32x4.neg]',
261+
'[keyword i32x4.any_true]',
262+
'[keyword i32x4.all_true]',
263+
'[keyword i32x4.bitmask]',
230264
'[keyword i32x4.shl]',
231265
'[keyword i32x4.shr_s]',
232266
'[keyword i32x4.shr_u]',
233267
'[keyword i32x4.sub]',
268+
'[keyword i32x4.min_s]',
269+
'[keyword i32x4.min_u]',
270+
'[keyword i32x4.max_s]',
271+
'[keyword i32x4.max_u]',
234272
'[keyword i64x2.add]',
235273
'[keyword i64x2.neg]',
236274
'[keyword i64x2.shl]',

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|32x4|64x2)|f(32x4|64x2))\.(splat|replace_lane|neg|add|sub)|i(8x16|16x8)\.extract_lane_[su]|i(8x16|16x8|32x4)\.(eq|ne|([lg][te]_[su]))|f(32x4|64x2)\.(eq|ne|[lg][te])|[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)|[fi](32x4|64x2)\.extract_lane|v8x16\.(shuffle|swizzle)/, 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)