Skip to content

Commit 4a36584

Browse files
ngzhianmarijnh
authored andcommitted
[wast mode] Add more SIMD instructions
This adds all comparison (eq, ne, lt, gt, le, ge), and v8x16.shuffle and v8x16.swizzle. Full list of instructions found at: https://github.com/WebAssembly/simd/blob/master/proposals/simd/BinarySIMD.md The ordering in the test file follows this the ordering in the binary form. The regex ordering is more arbitrary due to grouping.
1 parent c012079 commit 4a36584

2 files changed

Lines changed: 45 additions & 1 deletion

File tree

mode/wast/test.js

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,8 @@
143143
'[keyword v128.load] [keyword offset]=[number 32] [keyword align]=[number 4]',
144144
'[keyword v128.store] [keyword offset]=[number 32] [keyword align]=[number 4]',
145145
'[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]',
146+
'[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]',
147+
'[keyword v8x16.swizzle]',
146148
'[keyword i8x16.splat]',
147149
'[keyword i16x8.splat]',
148150
'[keyword i32x4.splat]',
@@ -163,6 +165,48 @@
163165
'[keyword f32x4.replace_lane] [number 1]',
164166
'[keyword f64x2.extract_lane] [number 1]',
165167
'[keyword f64x2.replace_lane] [number 1]',
168+
'[keyword i8x16.eq]',
169+
'[keyword i8x16.ne]',
170+
'[keyword i8x16.lt_s]',
171+
'[keyword i8x16.lt_u]',
172+
'[keyword i8x16.gt_s]',
173+
'[keyword i8x16.gt_u]',
174+
'[keyword i8x16.le_s]',
175+
'[keyword i8x16.le_u]',
176+
'[keyword i8x16.ge_s]',
177+
'[keyword i8x16.ge_u]',
178+
'[keyword i16x8.eq]',
179+
'[keyword i16x8.ne]',
180+
'[keyword i16x8.lt_s]',
181+
'[keyword i16x8.lt_u]',
182+
'[keyword i16x8.gt_s]',
183+
'[keyword i16x8.gt_u]',
184+
'[keyword i16x8.le_s]',
185+
'[keyword i16x8.le_u]',
186+
'[keyword i16x8.ge_s]',
187+
'[keyword i16x8.ge_u]',
188+
'[keyword i32x4.eq]',
189+
'[keyword i32x4.ne]',
190+
'[keyword i32x4.lt_s]',
191+
'[keyword i32x4.lt_u]',
192+
'[keyword i32x4.gt_s]',
193+
'[keyword i32x4.gt_u]',
194+
'[keyword i32x4.le_s]',
195+
'[keyword i32x4.le_u]',
196+
'[keyword i32x4.ge_s]',
197+
'[keyword i32x4.ge_u]',
198+
'[keyword f32x4.eq]',
199+
'[keyword f32x4.ne]',
200+
'[keyword f32x4.lt]',
201+
'[keyword f32x4.gt]',
202+
'[keyword f32x4.le]',
203+
'[keyword f32x4.ge]',
204+
'[keyword f64x2.eq]',
205+
'[keyword f64x2.ne]',
206+
'[keyword f64x2.lt]',
207+
'[keyword f64x2.gt]',
208+
'[keyword f64x2.le]',
209+
'[keyword f64x2.ge]',
166210
'[keyword v128.not]',
167211
'[keyword v128.andnot]',
168212
'[keyword v128.and]',

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]|[fi](32x4|64x2)\.extract_lane/, 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|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"},
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)