Instructions

Instructions are syntactically distinguished into plain and structured instructions.

\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-instr}{\mathtt{instr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & {\mathit{in}}{:}{{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & {\mathit{in}} \\ & & | & {\mathit{in}}{:}{{\href{../text/instructions.html#text-blockinstr}{\mathtt{blockinstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & {\mathit{in}} \\ & {{\href{../text/instructions.html#text-instrs}{\mathtt{instrs}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & {{\mathit{in}}^\ast}{:}{{{\href{../text/instructions.html#text-instr}{\mathtt{instr}}}}_{{\href{../text/conventions.html#text-context}{I}}}^\ast} & \quad\Rightarrow\quad{} & {{\mathit{in}}^\ast} \\ \end{array}\end{split}\]

In addition, as a syntactic abbreviation, instructions can be written as S-expressions in folded form, to group them visually.

Labels

Structured control instructions can be annotated with a symbolic label identifier. They are the only symbolic identifiers that can be bound locally in an instruction sequence. The following grammar handles the corresponding update to the identifier context by composing the context with an additional label entry.

\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-label}{\mathtt{label}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \epsilon & \quad\Rightarrow\quad{} & (\epsilon, \{ \href{../text/conventions.html#text-context}{\mathsf{labels}}~\epsilon \} \oplus {\href{../text/conventions.html#text-context}{I}}) \\ & & | & {\mathit{id}}{:}{\href{../text/values.html#text-id}{\mathtt{id}}} & \quad\Rightarrow\quad{} & ({\mathit{id}}, \{ \href{../text/conventions.html#text-context}{\mathsf{labels}}~{\mathit{id}} \} \oplus {\href{../text/conventions.html#text-context}{I}}) & \quad \mbox{if}~ {\mathit{id}} \notin {\href{../text/conventions.html#text-context}{I}}{.}\href{../text/conventions.html#text-context}{\mathsf{labels}} \\ & & | & {\mathit{id}}{:}{\href{../text/values.html#text-id}{\mathtt{id}}} & \quad\Rightarrow\quad{} & ({\mathit{id}}, \{ \href{../text/conventions.html#text-context}{\mathsf{labels}}~{\mathit{id}} \} \oplus {\href{../text/conventions.html#text-context}{I}}{}[{.}\href{../text/conventions.html#text-context}{\mathsf{labels}}{}[x] = \epsilon]) & \quad \mbox{if}~ {\mathit{id}} = {\href{../text/conventions.html#text-context}{I}}{.}\href{../text/conventions.html#text-context}{\mathsf{labels}}{}[x] \\ \end{array}\end{split}\]

Note

The new label entry is inserted at the beginning of the label list in the identifier context. This effectively shifts all existing labels up by one, mirroring the fact that control instructions are indexed relatively not absolutely.

If a label with the same name already exists, then it is shadowed and the earlier label becomes inaccessible.

Parametric Instructions

\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \mbox{‘\texttt{unreachable}’} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{unreachable}} \\ & & | & \mbox{‘\texttt{nop}’} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{nop}} \\ & & | & \mbox{‘\texttt{drop}’} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-parametric}{\mathsf{drop}} \\ & & | & \mbox{‘\texttt{select}’}~~{({t^\ast}{:}{{{\href{../text/types.html#text-comptype}{\mathtt{result}}}}_{{\href{../text/conventions.html#text-context}{I}}}^\ast})^?} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-parametric}{\mathsf{select}}~{({t^\ast})^?} \\ \end{array}\end{split}\]

Control Instructions

Structured control instructions can bind an optional symbolic label identifier. The same label identifier may optionally be repeated after the corresponding \(\mbox{‘\texttt{end}’}\) or \(\mbox{‘\texttt{else}’}\) keywords, to indicate the matching delimiters.

Their block type is given as a type use, analogous to the type of functions. However, the special case of a type use that is syntactically empty or consists of only a single result is not regarded as an abbreviation for an inline function type, but is parsed directly into an optional value type.

\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & {t^?}{:}{{{\href{../text/types.html#text-comptype}{\mathtt{result}}}}_{{\href{../text/conventions.html#text-context}{I}}}^?} & \quad\Rightarrow\quad{} & {t^?} \\ & & | & (x, {\href{../text/conventions.html#text-context}{I}'}){:}{{\href{../text/types.html#text-typeuse}{\mathtt{typeuse}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & x & \\ &&& \multicolumn{4}{@{}l@{}}{\quad \quad \mbox{if}~ {\href{../text/conventions.html#text-context}{I}'} = \{ \href{../text/conventions.html#text-context}{\mathsf{locals}}~{(\epsilon)^\ast} \} } \\[0.8ex] & {{\href{../text/instructions.html#text-blockinstr}{\mathtt{blockinstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \begin{array}[t]{@{}l@{}} \mbox{‘\texttt{block}’}~~({{\mathit{id}}^?}, {\href{../text/conventions.html#text-context}{I}'}){:}{{\href{../text/instructions.html#text-label}{\mathtt{label}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{bt}}{:}{{\href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}}}_{{\href{../text/conventions.html#text-context}{I}}} \\ {{\mathit{in}}^\ast}{:}{{\href{../text/instructions.html#text-instrs}{\mathtt{instrs}}}}_{{\href{../text/conventions.html#text-context}{I}'}} \\ \mbox{‘\texttt{end}’}~~{{\mathit{id}'}^?}{:}{{\href{../text/values.html#text-id}{\mathtt{id}}}^?} \end{array} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{block}}~{\mathit{bt}}~{{\mathit{in}}^\ast} & \\ &&& \multicolumn{4}{@{}l@{}}{\quad \quad \mbox{if}~ {{\mathit{id}'}^?} = \epsilon \lor {{\mathit{id}'}^?} = {{\mathit{id}}^?} } \\ & & | & \begin{array}[t]{@{}l@{}} \mbox{‘\texttt{loop}’}~~({{\mathit{id}}^?}, {\href{../text/conventions.html#text-context}{I}'}){:}{{\href{../text/instructions.html#text-label}{\mathtt{label}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{bt}}{:}{{\href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}}}_{{\href{../text/conventions.html#text-context}{I}}} \\ {{\mathit{in}}^\ast}{:}{{\href{../text/instructions.html#text-instrs}{\mathtt{instrs}}}}_{{\href{../text/conventions.html#text-context}{I}'}} \\ \mbox{‘\texttt{end}’}~~{{\mathit{id}'}^?}{:}{{\href{../text/values.html#text-id}{\mathtt{id}}}^?} \end{array} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{loop}}~{\mathit{bt}}~{{\mathit{in}}^\ast} & \\ &&& \multicolumn{4}{@{}l@{}}{\quad \quad \mbox{if}~ {{\mathit{id}'}^?} = \epsilon \lor {{\mathit{id}'}^?} = {{\mathit{id}}^?} } \\ & & | & \begin{array}[t]{@{}l@{}} \mbox{‘\texttt{if}’}~~({{\mathit{id}}^?}, {\href{../text/conventions.html#text-context}{I}'}){:}{{\href{../text/instructions.html#text-label}{\mathtt{label}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{bt}}{:}{{\href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}}}_{{\href{../text/conventions.html#text-context}{I}}} \\ {{\mathit{in}}_1^\ast}{:}{{\href{../text/instructions.html#text-instrs}{\mathtt{instrs}}}}_{{\href{../text/conventions.html#text-context}{I}'}} \\ \mbox{‘\texttt{else}’}~~{{\mathit{id}}_1^?}{:}{{\href{../text/values.html#text-id}{\mathtt{id}}}^?} \\ {{\mathit{in}}_2^\ast}{:}{{\href{../text/instructions.html#text-instrs}{\mathtt{instrs}}}}_{{\href{../text/conventions.html#text-context}{I}'}} \\ \mbox{‘\texttt{end}’}~~{{\mathit{id}}_2^?}{:}{{\href{../text/values.html#text-id}{\mathtt{id}}}^?} \end{array} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{if}}~{\mathit{bt}}~{{\mathit{in}}_1^\ast}~\href{../syntax/instructions.html#syntax-instr-control}{\mathsf{else}}~{{\mathit{in}}_2^\ast} & \\ &&& \multicolumn{4}{@{}l@{}}{\quad \quad \mbox{if}~ ({{\mathit{id}}_1^?} = \epsilon \lor {{\mathit{id}}_1^?} = {{\mathit{id}}^?}) \land ({{\mathit{id}}_2^?} = \epsilon \lor {{\mathit{id}}_2^?} = {{\mathit{id}}^?}) } \\ & & | & \begin{array}[t]{@{}l@{}} \mbox{‘\texttt{try\_table}’}~~({{\mathit{id}}^?}, {\href{../text/conventions.html#text-context}{I}'}){:}{{\href{../text/instructions.html#text-label}{\mathtt{label}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{bt}}{:}{{\href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}}}_{{\href{../text/conventions.html#text-context}{I}}} \\ {c^\ast}{:}{{{\href{../text/instructions.html#text-catch}{\mathtt{catch}}}}_{{\href{../text/conventions.html#text-context}{I}}}^\ast} \\ {{\mathit{in}}^\ast}{:}{{\href{../text/instructions.html#text-instrs}{\mathtt{instrs}}}}_{{\href{../text/conventions.html#text-context}{I}'}} \\ \mbox{‘\texttt{end}’}~~{{\mathit{id}'}^?}{:}{{\href{../text/values.html#text-id}{\mathtt{id}}}^?} \end{array} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{try\_table}}~{\mathit{bt}}~{c^\ast}~{{\mathit{in}}^\ast} & \\ &&& \multicolumn{4}{@{}l@{}}{\quad \quad \mbox{if}~ {{\mathit{id}'}^?} = \epsilon \lor {{\mathit{id}'}^?} = {{\mathit{id}}^?} } \\[0.8ex] & {{\href{../text/instructions.html#text-catch}{\mathtt{catch}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{catch}’}~~x{:}{{\href{../text/modules.html#text-tagidx}{\mathtt{tagidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~l{:}{{\href{../text/modules.html#text-labelidx}{\mathtt{labelidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{catch}}~x~l \\ & & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{catch\_ref}’}~~x{:}{{\href{../text/modules.html#text-tagidx}{\mathtt{tagidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~l{:}{{\href{../text/modules.html#text-labelidx}{\mathtt{labelidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{catch\_ref}}~x~l \\ & & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{catch\_all}’}~~l{:}{{\href{../text/modules.html#text-labelidx}{\mathtt{labelidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{catch\_all}}~l \\ & & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{catch\_all\_ref}’}~~l{:}{{\href{../text/modules.html#text-labelidx}{\mathtt{labelidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{catch\_all\_ref}}~l \\ \end{array}\end{split}\]

Note

The side condition stating that the identifier context \({\href{../text/conventions.html#text-context}{I}'}\) must only contain unnamed entries in the rule for \({\mathtt{typeuse}}\) block types enforces that no identifier can be bound in any \({\mathtt{param}}\) declaration for a block type.

All other control instruction are represented verbatim.

Note

The side condition stating that the identifier context \({\href{../text/conventions.html#text-context}{I}'}\) must only contain unnamed entries in the rule for \(\href{../syntax/instructions.html#syntax-instr-control}{\mathsf{call\_indirect}}\) enforces that no identifier can be bound in any \(\href{../text/types.html#text-comptype}{\mathtt{param}}\) declaration appearing in the type annotation.

Abbreviations

The \(\mbox{‘\texttt{else}’}\) keyword of an \(\mbox{‘\texttt{if}’}\) instruction can be omitted if the following instruction sequence is empty.

\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-blockinstr}{\mathtt{blockinstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \dots \\ & & | & \mbox{‘\texttt{if}’}~~{{\href{../text/instructions.html#text-label}{\mathtt{label}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{{\href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{{\href{../text/instructions.html#text-instrs}{\mathtt{instrs}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~\mbox{‘\texttt{end}’}~~{{\href{../text/values.html#text-id}{\mathtt{id}}}^?} & \quad\equiv\quad{} & & \\ &&& \multicolumn{4}{@{}l@{}}{\quad \begin{array}[t]{@{}l@{}} \mbox{‘\texttt{if}’}~~{{\href{../text/instructions.html#text-label}{\mathtt{label}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{{\href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{{\href{../text/instructions.html#text-instrs}{\mathtt{instrs}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~\mbox{‘\texttt{else}’}~~\mbox{‘\texttt{end}’}~~{{\href{../text/values.html#text-id}{\mathtt{id}}}^?} \\ \end{array} } \\ \end{array}\end{split}\]

Also, for backwards compatibility, the table index to \(\mbox{‘\texttt{call\_indirect}’}\) and \(\mbox{‘\texttt{return\_call\_indirect}’}\) can be omitted, defaulting to \(0\).

\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \dots \\ & & | & \mbox{‘\texttt{call\_indirect}’}~~{{\href{../text/types.html#text-typeuse}{\mathtt{typeuse}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\equiv\quad{} & \mbox{‘\texttt{call\_indirect}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/types.html#text-typeuse}{\mathtt{typeuse}}}}_{{\href{../text/conventions.html#text-context}{I}}} \\ & & | & \mbox{‘\texttt{return\_call\_indirect}’}~~{{\href{../text/types.html#text-typeuse}{\mathtt{typeuse}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\equiv\quad{} & \mbox{‘\texttt{return\_call\_indirect}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/types.html#text-typeuse}{\mathtt{typeuse}}}}_{{\href{../text/conventions.html#text-context}{I}}} \\ \end{array}\end{split}\]

Variable Instructions

\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \dots \\ & & | & \mbox{‘\texttt{local.get}’}~~x{:}{{\href{../text/modules.html#text-localidx}{\mathtt{localidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-variable}{\mathsf{local{.}get}}~x \\ & & | & \mbox{‘\texttt{local.set}’}~~x{:}{{\href{../text/modules.html#text-localidx}{\mathtt{localidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-variable}{\mathsf{local{.}set}}~x \\ & & | & \mbox{‘\texttt{local.tee}’}~~x{:}{{\href{../text/modules.html#text-localidx}{\mathtt{localidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-variable}{\mathsf{local{.}tee}}~x \\ & & | & \mbox{‘\texttt{global.get}’}~~x{:}{{\href{../text/modules.html#text-globalidx}{\mathtt{globalidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-variable}{\mathsf{global{.}get}}~x \\ & & | & \mbox{‘\texttt{global.set}’}~~x{:}{{\href{../text/modules.html#text-globalidx}{\mathtt{globalidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-variable}{\mathsf{global{.}set}}~x \\ \end{array}\end{split}\]

Table Instructions

\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \dots \\ & & | & \mbox{‘\texttt{table.get}’}~~x{:}{{\href{../text/modules.html#text-tableidx}{\mathtt{tableidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-table}{\mathsf{table{.}get}}~x \\ & & | & \mbox{‘\texttt{table.set}’}~~x{:}{{\href{../text/modules.html#text-tableidx}{\mathtt{tableidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-table}{\mathsf{table{.}set}}~x \\ & & | & \mbox{‘\texttt{table.size}’}~~x{:}{{\href{../text/modules.html#text-tableidx}{\mathtt{tableidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-table}{\mathsf{table{.}size}}~x \\ & & | & \mbox{‘\texttt{table.grow}’}~~x{:}{{\href{../text/modules.html#text-tableidx}{\mathtt{tableidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-table}{\mathsf{table{.}grow}}~x \\ & & | & \mbox{‘\texttt{table.fill}’}~~x{:}{{\href{../text/modules.html#text-tableidx}{\mathtt{tableidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-table}{\mathsf{table{.}fill}}~x \\ & & | & \mbox{‘\texttt{table.copy}’}~~x_1{:}{{\href{../text/modules.html#text-tableidx}{\mathtt{tableidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~x_2{:}{{\href{../text/modules.html#text-tableidx}{\mathtt{tableidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-table}{\mathsf{table{.}copy}}~x_1~x_2 \\ & & | & \mbox{‘\texttt{table.init}’}~~x{:}{{\href{../text/modules.html#text-tableidx}{\mathtt{tableidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~y{:}{{\href{../text/modules.html#text-elemidx}{\mathtt{elemidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-table}{\mathsf{table{.}init}}~x~y \\ & & | & \mbox{‘\texttt{elem.drop}’}~~x{:}{{\href{../text/modules.html#text-elemidx}{\mathtt{elemidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-table}{\mathsf{elem{.}drop}}~x \\ \end{array}\end{split}\]

Abbreviations

For backwards compatibility, all table indices may be omitted from table instructions, defaulting to \(0\).

\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \dots \\ & & | & \mbox{‘\texttt{table.get}’} & \quad\equiv\quad{} & \mbox{‘\texttt{table.get}’}~~\mbox{‘\texttt{0}’} \\ & & | & \mbox{‘\texttt{table.set}’} & \quad\equiv\quad{} & \mbox{‘\texttt{table.set}’}~~\mbox{‘\texttt{0}’} \\ & & | & \mbox{‘\texttt{table.size}’} & \quad\equiv\quad{} & \mbox{‘\texttt{table.size}’}~~\mbox{‘\texttt{0}’} \\ & & | & \mbox{‘\texttt{table.grow}’} & \quad\equiv\quad{} & \mbox{‘\texttt{table.grow}’}~~\mbox{‘\texttt{0}’} \\ & & | & \mbox{‘\texttt{table.fill}’} & \quad\equiv\quad{} & \mbox{‘\texttt{table.fill}’}~~\mbox{‘\texttt{0}’} \\ & & | & \mbox{‘\texttt{table.copy}’} & \quad\equiv\quad{} & \mbox{‘\texttt{table.copy}’}~~\mbox{‘\texttt{0}’}~~\mbox{‘\texttt{0}’} \\ & & | & \mbox{‘\texttt{table.init}’}~~{{\href{../text/modules.html#text-elemidx}{\mathtt{elemidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\equiv\quad{} & \mbox{‘\texttt{table.init}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/modules.html#text-elemidx}{\mathtt{elemidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} \\ \end{array}\end{split}\]

Memory Instructions

The offset and alignment immediates to memory instructions are optional. The offset defaults to \(0\), the alignment to the storage size of the respective memory access, which is its natural alignment. Lexically, an \({\href{../text/instructions.html#text-memarg}{\mathtt{offset}}}\) or \({\href{../text/instructions.html#text-memarg}{\mathtt{align}}}\) phrase is considered a single keyword token, so no white space is allowed around the \(\mbox{‘\texttt{{=}}’}\).

\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{N} & ::= & n{:}{\href{../text/instructions.html#text-memarg}{\mathtt{offset}}}~~m{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{align}}}}_{N} & \quad\Rightarrow\quad{} & \{ \href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{align}}~n,\;\allowbreak \href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{offset}}~m \} \\ & {\href{../text/instructions.html#text-memarg}{\mathtt{offset}}} & ::= & \mbox{‘\texttt{offset{=}}’}~~n{:}{\href{../text/values.html#text-int}{\mathtt{u64}}} & \quad\Rightarrow\quad{} & n \\ & & | & \epsilon & \quad\Rightarrow\quad{} & 0 \\ & {{\href{../text/instructions.html#text-memarg}{\mathtt{align}}}}_{N} & ::= & \mbox{‘\texttt{align{=}}’}~~m{:}{\href{../text/values.html#text-int}{\mathtt{u64}}} & \quad\Rightarrow\quad{} & m & \quad \mbox{if}~ m = {2^{n}} \\ & & | & \epsilon & \quad\Rightarrow\quad{} & N \\ & {\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & ::= & i{:}{\href{../text/values.html#text-int}{\mathtt{u8}}} & \quad\Rightarrow\quad{} & i \\ & {{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \dots \\ & & | & \mbox{‘\texttt{i32.load}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{i64.load}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{f32.load}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{f64.load}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{i32.load8\_s}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}}{{\mathsf{{\scriptstyle 8}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{i32.load8\_u}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}}{{\mathsf{{\scriptstyle 8}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{i32.load16\_s}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{2} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}}{{\mathsf{{\scriptstyle 16}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{i32.load16\_u}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{2} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}}{{\mathsf{{\scriptstyle 16}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{i64.load8\_s}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}}{{\mathsf{{\scriptstyle 8}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{i64.load8\_u}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}}{{\mathsf{{\scriptstyle 8}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{i64.load16\_s}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{2} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}}{{\mathsf{{\scriptstyle 16}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{i64.load16\_u}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{2} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}}{{\mathsf{{\scriptstyle 16}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{i64.load32\_s}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}}{{\mathsf{{\scriptstyle 32}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{i64.load32\_u}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}}{{\mathsf{{\scriptstyle 32}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{v128.load}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{16} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{v128.load8x8\_s}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}}{{\mathsf{{\scriptstyle 8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{v128.load8x8\_u}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}}{{\mathsf{{\scriptstyle 8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{v128.load16x4\_s}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}}{{\mathsf{{\scriptstyle 16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{v128.load16x4\_u}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}}{{\mathsf{{\scriptstyle 16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{v128.load32x2\_s}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}}{{\mathsf{{\scriptstyle 32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{v128.load32x2\_u}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}}{{\mathsf{{\scriptstyle 32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{v128.load8\_splat}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}}{{\mathsf{{\scriptstyle 8}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{splat}}}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{v128.load16\_splat}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{2} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}}{{\mathsf{{\scriptstyle 16}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{splat}}}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{v128.load32\_splat}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}}{{\mathsf{{\scriptstyle 32}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{splat}}}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{v128.load64\_splat}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}}{{\mathsf{{\scriptstyle 64}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{splat}}}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{v128.load32\_zero}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}}{{\mathsf{{\scriptstyle 32}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{zero}}}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{v128.load64\_zero}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}}{{\mathsf{{\scriptstyle 64}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{zero}}}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{v128.load8\_lane}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1}~~i{:}{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}}{\mathsf{{\scriptstyle 8}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{lane}}}~x~{\mathit{ao}}~i \\ & & | & \mbox{‘\texttt{v128.load16\_lane}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{2}~~i{:}{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}}{\mathsf{{\scriptstyle 16}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{lane}}}~x~{\mathit{ao}}~i \\ & & | & \mbox{‘\texttt{v128.load32\_lane}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4}~~i{:}{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}}{\mathsf{{\scriptstyle 32}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{lane}}}~x~{\mathit{ao}}~i \\ & & | & \mbox{‘\texttt{v128.load64\_lane}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8}~~i{:}{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}}{\mathsf{{\scriptstyle 64}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{lane}}}~x~{\mathit{ao}}~i \\ & & | & \mbox{‘\texttt{i32.store}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{i64.store}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{f32.store}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{f64.store}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{i32.store8}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}}{\mathsf{{\scriptstyle 8}}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{i32.store16}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{2} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}}{\mathsf{{\scriptstyle 16}}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{i64.store8}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}}{\mathsf{{\scriptstyle 8}}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{i64.store16}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{2} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}}{\mathsf{{\scriptstyle 16}}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{i64.store32}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}}{\mathsf{{\scriptstyle 32}}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{v128.store}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{16} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}~x~{\mathit{ao}} \\ & & | & \mbox{‘\texttt{v128.store8\_lane}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1}~~i{:}{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}}{\mathsf{{\scriptstyle 8}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{lane}}}~x~{\mathit{ao}}~i \\ & & | & \mbox{‘\texttt{v128.store16\_lane}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{2}~~i{:}{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}}{\mathsf{{\scriptstyle 16}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{lane}}}~x~{\mathit{ao}}~i \\ & & | & \mbox{‘\texttt{v128.store32\_lane}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4}~~i{:}{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}}{\mathsf{{\scriptstyle 32}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{lane}}}~x~{\mathit{ao}}~i \\ & & | & \mbox{‘\texttt{v128.store64\_lane}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{\mathit{ao}}{:}{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8}~~i{:}{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}{.}\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}}{\mathsf{{\scriptstyle 64}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{lane}}}~x~{\mathit{ao}}~i \\ & & | & \mbox{‘\texttt{memory.size}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{memory{.}size}}~x \\ & & | & \mbox{‘\texttt{memory.grow}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{memory{.}grow}}~x \\ & & | & \mbox{‘\texttt{memory.fill}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{memory{.}fill}}~x \\ & & | & \mbox{‘\texttt{memory.copy}’}~~x_1{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~x_2{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{memory{.}copy}}~x_1~x_2 \\ & & | & \mbox{‘\texttt{memory.init}’}~~x{:}{{\href{../text/modules.html#text-memidx}{\mathtt{memidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~y{:}{{\href{../text/modules.html#text-dataidx}{\mathtt{dataidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{memory{.}init}}~x~y \\ & & | & \mbox{‘\texttt{data.drop}’}~~x{:}{{\href{../text/modules.html#text-dataidx}{\mathtt{dataidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{data{.}drop}}~x \\ \end{array}\end{split}\]

Abbreviations

As an abbreviation, the memory index can be omitted in all memory instructions, defaulting to \(0\).

\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \dots \\ & & | & \mbox{‘\texttt{i32.load}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4} & \quad\equiv\quad{} & \mbox{‘\texttt{i32.load}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4} \\ & & | & \mbox{‘\texttt{i64.load}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} & \quad\equiv\quad{} & \mbox{‘\texttt{i64.load}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} \\ & & | & \mbox{‘\texttt{f32.load}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4} & \quad\equiv\quad{} & \mbox{‘\texttt{f32.load}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4} \\ & & | & \mbox{‘\texttt{f64.load}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} & \quad\equiv\quad{} & \mbox{‘\texttt{f64.load}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} \\ & & | & \mbox{‘\texttt{i32.load8\_s}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1} & \quad\equiv\quad{} & \mbox{‘\texttt{i32.load8\_s}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1} \\ & & | & \mbox{‘\texttt{i32.load8\_u}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1} & \quad\equiv\quad{} & \mbox{‘\texttt{i32.load8\_u}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1} \\ & & | & \mbox{‘\texttt{i32.load16\_s}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{2} & \quad\equiv\quad{} & \mbox{‘\texttt{i32.load16\_s}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{2} \\ & & | & \mbox{‘\texttt{i32.load16\_u}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{2} & \quad\equiv\quad{} & \mbox{‘\texttt{i32.load16\_u}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{2} \\ & & | & \mbox{‘\texttt{i64.load8\_s}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1} & \quad\equiv\quad{} & \mbox{‘\texttt{i64.load8\_s}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1} \\ & & | & \mbox{‘\texttt{i64.load8\_u}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1} & \quad\equiv\quad{} & \mbox{‘\texttt{i64.load8\_u}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1} \\ & & | & \mbox{‘\texttt{i64.load16\_s}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{2} & \quad\equiv\quad{} & \mbox{‘\texttt{i64.load16\_s}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{2} \\ & & | & \mbox{‘\texttt{i64.load16\_u}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{2} & \quad\equiv\quad{} & \mbox{‘\texttt{i64.load16\_u}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{2} \\ & & | & \mbox{‘\texttt{i64.load32\_s}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4} & \quad\equiv\quad{} & \mbox{‘\texttt{i64.load32\_s}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4} \\ & & | & \mbox{‘\texttt{i64.load32\_u}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4} & \quad\equiv\quad{} & \mbox{‘\texttt{i64.load32\_u}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4} \\ & & | & \mbox{‘\texttt{v128.load}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{16} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.load}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{16} \\ & & | & \mbox{‘\texttt{v128.load8x8\_s}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.load8x8\_s}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} \\ & & | & \mbox{‘\texttt{v128.load8x8\_u}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.load8x8\_u}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} \\ & & | & \mbox{‘\texttt{v128.load16x4\_s}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.load16x4\_s}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} \\ & & | & \mbox{‘\texttt{v128.load16x4\_u}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.load16x4\_u}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} \\ & & | & \mbox{‘\texttt{v128.load32x2\_s}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.load32x2\_s}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} \\ & & | & \mbox{‘\texttt{v128.load32x2\_u}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.load32x2\_u}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} \\ & & | & \mbox{‘\texttt{v128.load8\_splat}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.load8\_splat}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1} \\ & & | & \mbox{‘\texttt{v128.load16\_splat}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{2} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.load16\_splat}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{2} \\ & & | & \mbox{‘\texttt{v128.load32\_splat}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.load32\_splat}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4} \\ & & | & \mbox{‘\texttt{v128.load64\_splat}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.load64\_splat}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} \\ & & | & \mbox{‘\texttt{v128.load32\_zero}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.load32\_zero}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4} \\ & & | & \mbox{‘\texttt{v128.load64\_zero}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.load64\_zero}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} \\ & & | & \mbox{‘\texttt{v128.load8\_lane}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1}~~{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.load8\_lane}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1}~~{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} \\ & & | & \mbox{‘\texttt{v128.load16\_lane}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{2}~~{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.load16\_lane}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{2}~~{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} \\ & & | & \mbox{‘\texttt{v128.load32\_lane}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4}~~{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.load32\_lane}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4}~~{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} \\ & & | & \mbox{‘\texttt{v128.load64\_lane}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8}~~{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.load64\_lane}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8}~~{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} \\ & & | & \mbox{‘\texttt{i32.store}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4} & \quad\equiv\quad{} & \mbox{‘\texttt{i32.store}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4} \\ & & | & \mbox{‘\texttt{i64.store}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} & \quad\equiv\quad{} & \mbox{‘\texttt{i64.store}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} \\ & & | & \mbox{‘\texttt{f32.store}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4} & \quad\equiv\quad{} & \mbox{‘\texttt{f32.store}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4} \\ & & | & \mbox{‘\texttt{f64.store}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} & \quad\equiv\quad{} & \mbox{‘\texttt{f64.store}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8} \\ & & | & \mbox{‘\texttt{i32.store8}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1} & \quad\equiv\quad{} & \mbox{‘\texttt{i32.store8}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1} \\ & & | & \mbox{‘\texttt{i32.store16}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{2} & \quad\equiv\quad{} & \mbox{‘\texttt{i32.store16}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{2} \\ & & | & \mbox{‘\texttt{i64.store8}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1} & \quad\equiv\quad{} & \mbox{‘\texttt{i64.store8}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1} \\ & & | & \mbox{‘\texttt{i64.store16}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{2} & \quad\equiv\quad{} & \mbox{‘\texttt{i64.store16}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{2} \\ & & | & \mbox{‘\texttt{i64.store32}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4} & \quad\equiv\quad{} & \mbox{‘\texttt{i64.store32}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4} \\ & & | & \mbox{‘\texttt{v128.store}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{16} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.store}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{16} \\ & & | & \mbox{‘\texttt{v128.store8\_lane}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1}~~{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.store8\_lane}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1}~~{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} \\ & & | & \mbox{‘\texttt{v128.store16\_lane}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{2}~~{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.store16\_lane}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1}~~{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} \\ & & | & \mbox{‘\texttt{v128.store32\_lane}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{4}~~{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.store32\_lane}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1}~~{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} \\ & & | & \mbox{‘\texttt{v128.store64\_lane}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{8}~~{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.store64\_lane}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}}}_{1}~~{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} \\ & & | & \mbox{‘\texttt{memory.size}’} & \quad\equiv\quad{} & \mbox{‘\texttt{memory.size}’}~~\mbox{‘\texttt{0}’} \\ & & | & \mbox{‘\texttt{memory.grow}’} & \quad\equiv\quad{} & \mbox{‘\texttt{memory.grow}’}~~\mbox{‘\texttt{0}’} \\ & & | & \mbox{‘\texttt{memory.fill}’} & \quad\equiv\quad{} & \mbox{‘\texttt{memory.fill}’}~~\mbox{‘\texttt{0}’} \\ & & | & \mbox{‘\texttt{memory.copy}’} & \quad\equiv\quad{} & \mbox{‘\texttt{memory.copy}’}~~\mbox{‘\texttt{0}’}~~\mbox{‘\texttt{0}’} \\ & & | & \mbox{‘\texttt{memory.init}’}~~{{\href{../text/modules.html#text-dataidx}{\mathtt{dataidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\equiv\quad{} & \mbox{‘\texttt{memory.init}’}~~\mbox{‘\texttt{0}’}~~{{\href{../text/modules.html#text-dataidx}{\mathtt{dataidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} \\ \end{array}\end{split}\]

Reference Instructions

\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \dots \\ & & | & \mbox{‘\texttt{ref.null}’}~~{\mathit{ht}}{:}{{\href{../text/types.html#text-heaptype}{\mathtt{heaptype}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-ref}{\mathsf{ref{.}null}}~{\mathit{ht}} \\ & & | & \mbox{‘\texttt{ref.func}’}~~x{:}{{\href{../text/modules.html#text-funcidx}{\mathtt{funcidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-ref}{\mathsf{ref{.}func}}~x \\ & & | & \mbox{‘\texttt{ref.is\_null}’} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-ref}{\mathsf{ref{.}is\_null}} \\ & & | & \mbox{‘\texttt{ref.as\_non\_null}’} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-ref}{\mathsf{ref{.}as\_non\_null}} \\ & & | & \mbox{‘\texttt{ref.eq}’} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-ref}{\mathsf{ref{.}eq}} \\ & & | & \mbox{‘\texttt{ref.test}’}~~{\mathit{rt}}{:}{{\href{../text/types.html#text-reftype}{\mathtt{reftype}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-ref}{\mathsf{ref{.}test}}~{\mathit{rt}} \\ & & | & \mbox{‘\texttt{ref.cast}’}~~{\mathit{rt}}{:}{{\href{../text/types.html#text-reftype}{\mathtt{reftype}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-ref}{\mathsf{ref{.}cast}}~{\mathit{rt}} \\ & & | & \mbox{‘\texttt{ref.i31}’} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-i31}{\mathsf{ref{.}i\scriptstyle31}} \\ & & | & \mbox{‘\texttt{i31.get\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/instructions.html#syntax-instr-i31}{\mathsf{i{\scriptstyle31}{.}get}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\ & & | & \mbox{‘\texttt{i31.get\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/instructions.html#syntax-instr-i31}{\mathsf{i{\scriptstyle31}{.}get}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\ & & | & \mbox{‘\texttt{struct.new}’}~~x{:}{{\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-struct}{\mathsf{struct{.}new}}~x \\ & & | & \mbox{‘\texttt{struct.new\_default}’}~~x{:}{{\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-struct}{\mathsf{struct{.}new\_default}}~x \\ & & | & \mbox{‘\texttt{struct.get}’}~~x{:}{{\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~i{:}{{\href{../text/modules.html#text-fieldidx}{\mathtt{fieldidx}}}}_{{\href{../text/conventions.html#text-context}{I}}, x} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-struct}{\mathsf{struct{.}get}}~x~i \\ & & | & \mbox{‘\texttt{struct.get\_s}’}~~x{:}{{\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~i{:}{{\href{../text/modules.html#text-fieldidx}{\mathtt{fieldidx}}}}_{{\href{../text/conventions.html#text-context}{I}}, x} & \quad\Rightarrow\quad{} & {\href{../syntax/instructions.html#syntax-instr-struct}{\mathsf{struct{.}get}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}}~x~i \\ & & | & \mbox{‘\texttt{struct.get\_u}’}~~x{:}{{\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~i{:}{{\href{../text/modules.html#text-fieldidx}{\mathtt{fieldidx}}}}_{{\href{../text/conventions.html#text-context}{I}}, x} & \quad\Rightarrow\quad{} & {\href{../syntax/instructions.html#syntax-instr-struct}{\mathsf{struct{.}get}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}}~x~i \\ & & | & \mbox{‘\texttt{struct.set}’}~~x{:}{{\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~i{:}{{\href{../text/modules.html#text-fieldidx}{\mathtt{fieldidx}}}}_{{\href{../text/conventions.html#text-context}{I}}, x} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-struct}{\mathsf{struct{.}set}}~x~i \\ & & | & \mbox{‘\texttt{array.new}’}~~x{:}{{\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array{.}new}}~x \\ & & | & \mbox{‘\texttt{array.new\_default}’}~~x{:}{{\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array{.}new\_default}}~x \\ & & | & \mbox{‘\texttt{array.new\_fixed}’}~~x{:}{{\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~n{:}{\href{../text/values.html#text-int}{\mathtt{u32}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array{.}new\_fixed}}~x~n \\ & & | & \mbox{‘\texttt{array.new\_data}’}~~x{:}{{\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~y{:}{{\href{../text/modules.html#text-dataidx}{\mathtt{dataidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array{.}new\_data}}~x~y \\ & & | & \mbox{‘\texttt{array.new\_elem}’}~~x{:}{{\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~y{:}{{\href{../text/modules.html#text-elemidx}{\mathtt{elemidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array{.}new\_elem}}~x~y \\ & & | & \mbox{‘\texttt{array.get}’}~~x{:}{{\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array{.}get}}~x \\ & & | & \mbox{‘\texttt{array.get\_s}’}~~x{:}{{\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & {\href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array{.}get}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}}~x \\ & & | & \mbox{‘\texttt{array.get\_u}’}~~x{:}{{\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & {\href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array{.}get}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}}~x \\ & & | & \mbox{‘\texttt{array.set}’}~~x{:}{{\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array{.}set}}~x \\ & & | & \mbox{‘\texttt{array.len}’} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array{.}len}} \\ & & | & \mbox{‘\texttt{array.fill}’}~~x{:}{{\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array{.}fill}}~x \\ & & | & \mbox{‘\texttt{array.copy}’}~~x_1{:}{{\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~x_2{:}{{\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array{.}copy}}~x_1~x_2 \\ & & | & \mbox{‘\texttt{array.init\_data}’}~~x{:}{{\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~y{:}{{\href{../text/modules.html#text-dataidx}{\mathtt{dataidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array{.}init\_data}}~x~y \\ & & | & \mbox{‘\texttt{array.init\_elem}’}~~x{:}{{\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~y{:}{{\href{../text/modules.html#text-elemidx}{\mathtt{elemidx}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array{.}init\_elem}}~x~y \\ & & | & \mbox{‘\texttt{any.convert\_extern}’} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-extern}{\mathsf{any{.}convert\_extern}} \\ & & | & \mbox{‘\texttt{extern.convert\_any}’} & \quad\Rightarrow\quad{} & \href{../syntax/instructions.html#syntax-instr-extern}{\mathsf{extern{.}convert\_any}} \\ \end{array}\end{split}\]

Numeric Instructions

\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \dots \\ & & | & \mbox{‘\texttt{i32.const}’}~~c{:}{\href{../text/values.html#text-int}{\mathtt{i32}}} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}{.}\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{const}}~c \\ & & | & \mbox{‘\texttt{i64.const}’}~~c{:}{\href{../text/values.html#text-int}{\mathtt{i64}}} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}{.}\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{const}}~c \\ & & | & \mbox{‘\texttt{f32.const}’}~~c{:}{\href{../text/values.html#text-float}{\mathtt{f32}}} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}{.}\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{const}}~c \\ & & | & \mbox{‘\texttt{f64.const}’}~~c{:}{\href{../text/values.html#text-float}{\mathtt{f64}}} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}{.}\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{const}}~c \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \dots \\ & & | & \mbox{‘\texttt{i32.eqz}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{eqz}} \\ & & | & \mbox{‘\texttt{i32.eq}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{eq}} \\ & & | & \mbox{‘\texttt{i32.ne}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ne}} \\ & & | & \mbox{‘\texttt{i32.lt\_s}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{lt}} \\ & & | & \mbox{‘\texttt{i32.lt\_u}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{lt}} \\ & & | & \mbox{‘\texttt{i32.gt\_s}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{gt}} \\ & & | & \mbox{‘\texttt{i32.gt\_u}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{gt}} \\ & & | & \mbox{‘\texttt{i32.le\_s}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{le}} \\ & & | & \mbox{‘\texttt{i32.le\_u}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{le}} \\ & & | & \mbox{‘\texttt{i32.ge\_s}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ge}} \\ & & | & \mbox{‘\texttt{i32.ge\_u}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ge}} \\ & & | & \mbox{‘\texttt{i32.clz}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{clz}} \\ & & | & \mbox{‘\texttt{i32.ctz}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ctz}} \\ & & | & \mbox{‘\texttt{i32.popcnt}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{popcnt}} \\ & & | & \mbox{‘\texttt{i32.extend8\_s}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{extend}} \\ & & | & \mbox{‘\texttt{i32.extend16\_s}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{extend}} \\ & & | & \mbox{‘\texttt{i32.add}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{add}} \\ & & | & \mbox{‘\texttt{i32.sub}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{sub}} \\ & & | & \mbox{‘\texttt{i32.mul}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{mul}} \\ & & | & \mbox{‘\texttt{i32.div\_s}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{div}} \\ & & | & \mbox{‘\texttt{i32.div\_u}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{div}} \\ & & | & \mbox{‘\texttt{i32.rem\_s}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{rem}} \\ & & | & \mbox{‘\texttt{i32.rem\_u}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{rem}} \\ & & | & \mbox{‘\texttt{i32.and}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{and}} \\ & & | & \mbox{‘\texttt{i32.or}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{or}} \\ & & | & \mbox{‘\texttt{i32.xor}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{xor}} \\ & & | & \mbox{‘\texttt{i32.shl}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{shl}} \\ & & | & \mbox{‘\texttt{i32.shr\_s}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{shr}} \\ & & | & \mbox{‘\texttt{i32.shr\_u}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{shr}} \\ & & | & \mbox{‘\texttt{i32.rotl}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{rotl}} \\ & & | & \mbox{‘\texttt{i32.rotr}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{rotr}} \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \dots \\ & & | & \mbox{‘\texttt{i64.eqz}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{eqz}} \\ & & | & \mbox{‘\texttt{i64.eq}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{eq}} \\ & & | & \mbox{‘\texttt{i64.ne}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ne}} \\ & & | & \mbox{‘\texttt{i64.lt\_s}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{lt}} \\ & & | & \mbox{‘\texttt{i64.lt\_u}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{lt}} \\ & & | & \mbox{‘\texttt{i64.gt\_s}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{gt}} \\ & & | & \mbox{‘\texttt{i64.gt\_u}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{gt}} \\ & & | & \mbox{‘\texttt{i64.le\_s}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{le}} \\ & & | & \mbox{‘\texttt{i64.le\_u}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{le}} \\ & & | & \mbox{‘\texttt{i64.ge\_s}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ge}} \\ & & | & \mbox{‘\texttt{i64.ge\_u}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ge}} \\ & & | & \mbox{‘\texttt{i64.clz}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{clz}} \\ & & | & \mbox{‘\texttt{i64.ctz}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ctz}} \\ & & | & \mbox{‘\texttt{i64.popcnt}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{popcnt}} \\ & & | & \mbox{‘\texttt{i64.extend8\_s}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{extend}} \\ & & | & \mbox{‘\texttt{i64.extend16\_s}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{extend}} \\ & & | & \mbox{‘\texttt{i64.extend32\_s}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{extend}} \\ & & | & \mbox{‘\texttt{i64.add}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{add}} \\ & & | & \mbox{‘\texttt{i64.sub}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{sub}} \\ & & | & \mbox{‘\texttt{i64.mul}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{mul}} \\ & & | & \mbox{‘\texttt{i64.div\_s}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{div}} \\ & & | & \mbox{‘\texttt{i64.div\_u}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{div}} \\ & & | & \mbox{‘\texttt{i64.rem\_s}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{rem}} \\ & & | & \mbox{‘\texttt{i64.rem\_u}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{rem}} \\ & & | & \mbox{‘\texttt{i64.and}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{and}} \\ & & | & \mbox{‘\texttt{i64.or}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{or}} \\ & & | & \mbox{‘\texttt{i64.xor}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{xor}} \\ & & | & \mbox{‘\texttt{i64.shl}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{shl}} \\ & & | & \mbox{‘\texttt{i64.shr\_s}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{shr}} \\ & & | & \mbox{‘\texttt{i64.shr\_u}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{shr}} \\ & & | & \mbox{‘\texttt{i64.rotl}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{rotl}} \\ & & | & \mbox{‘\texttt{i64.rotr}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{rotr}} \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \dots \\ & & | & \mbox{‘\texttt{f32.eq}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{eq}} \\ & & | & \mbox{‘\texttt{f32.ne}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ne}} \\ & & | & \mbox{‘\texttt{f32.lt}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{lt}} \\ & & | & \mbox{‘\texttt{f32.gt}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{gt}} \\ & & | & \mbox{‘\texttt{f32.le}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{le}} \\ & & | & \mbox{‘\texttt{f32.ge}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ge}} \\ & & | & \mbox{‘\texttt{f32.abs}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{abs}} \\ & & | & \mbox{‘\texttt{f32.neg}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{neg}} \\ & & | & \mbox{‘\texttt{f32.sqrt}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{sqrt}} \\ & & | & \mbox{‘\texttt{f32.ceil}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ceil}} \\ & & | & \mbox{‘\texttt{f32.floor}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{floor}} \\ & & | & \mbox{‘\texttt{f32.trunc}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}} \\ & & | & \mbox{‘\texttt{f32.nearest}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{nearest}} \\ & & | & \mbox{‘\texttt{f32.add}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{add}} \\ & & | & \mbox{‘\texttt{f32.sub}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{sub}} \\ & & | & \mbox{‘\texttt{f32.mul}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{mul}} \\ & & | & \mbox{‘\texttt{f32.div}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{div}} \\ & & | & \mbox{‘\texttt{f32.min}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{min}} \\ & & | & \mbox{‘\texttt{f32.max}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{max}} \\ & & | & \mbox{‘\texttt{f32.copysign}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{copysign}} \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \dots \\ & & | & \mbox{‘\texttt{f64.eq}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{eq}} \\ & & | & \mbox{‘\texttt{f64.ne}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ne}} \\ & & | & \mbox{‘\texttt{f64.lt}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{lt}} \\ & & | & \mbox{‘\texttt{f64.gt}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{gt}} \\ & & | & \mbox{‘\texttt{f64.le}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{le}} \\ & & | & \mbox{‘\texttt{f64.ge}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ge}} \\ & & | & \mbox{‘\texttt{f64.abs}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{abs}} \\ & & | & \mbox{‘\texttt{f64.neg}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{neg}} \\ & & | & \mbox{‘\texttt{f64.sqrt}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{sqrt}} \\ & & | & \mbox{‘\texttt{f64.ceil}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ceil}} \\ & & | & \mbox{‘\texttt{f64.floor}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{floor}} \\ & & | & \mbox{‘\texttt{f64.trunc}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}} \\ & & | & \mbox{‘\texttt{f64.nearest}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{nearest}} \\ & & | & \mbox{‘\texttt{f64.add}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{add}} \\ & & | & \mbox{‘\texttt{f64.sub}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{sub}} \\ & & | & \mbox{‘\texttt{f64.mul}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{mul}} \\ & & | & \mbox{‘\texttt{f64.div}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{div}} \\ & & | & \mbox{‘\texttt{f64.min}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{min}} \\ & & | & \mbox{‘\texttt{f64.max}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{max}} \\ & & | & \mbox{‘\texttt{f64.copysign}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{copysign}} \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \dots \\ & & | & \mbox{‘\texttt{i32.wrap\_i64}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{wrap}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}} \\ & & | & \mbox{‘\texttt{i32.trunc\_f32\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}} \\ & & | & \mbox{‘\texttt{i32.trunc\_f32\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}} \\ & & | & \mbox{‘\texttt{i32.trunc\_f64\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}} \\ & & | & \mbox{‘\texttt{i32.trunc\_f64\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}} \\ & & | & \mbox{‘\texttt{i32.trunc\_sat\_f32\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc\_sat}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}} \\ & & | & \mbox{‘\texttt{i32.trunc\_sat\_f32\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc\_sat}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}} \\ & & | & \mbox{‘\texttt{i32.trunc\_sat\_f64\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc\_sat}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}} \\ & & | & \mbox{‘\texttt{i32.trunc\_sat\_f64\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc\_sat}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}} \\ & & | & \mbox{‘\texttt{i64.extend\_i64\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{extend}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}} \\ & & | & \mbox{‘\texttt{i64.extend\_i64\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{extend}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}} \\ & & | & \mbox{‘\texttt{i64.trunc\_f32\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}} \\ & & | & \mbox{‘\texttt{i64.trunc\_f32\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}} \\ & & | & \mbox{‘\texttt{i64.trunc\_f64\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}} \\ & & | & \mbox{‘\texttt{i64.trunc\_f64\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}} \\ & & | & \mbox{‘\texttt{i64.trunc\_sat\_f32\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc\_sat}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}} \\ & & | & \mbox{‘\texttt{i64.trunc\_sat\_f32\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc\_sat}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}} \\ & & | & \mbox{‘\texttt{i64.trunc\_sat\_f64\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc\_sat}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}} \\ & & | & \mbox{‘\texttt{i64.trunc\_sat\_f64\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc\_sat}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}} \\ & & | & \mbox{‘\texttt{f32.demote\_f64}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{demote}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}} \\ & & | & \mbox{‘\texttt{f32.convert\_i32\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}} \\ & & | & \mbox{‘\texttt{f32.convert\_i32\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}} \\ & & | & \mbox{‘\texttt{f32.convert\_i64\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}} \\ & & | & \mbox{‘\texttt{f32.convert\_i64\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}} \\ & & | & \mbox{‘\texttt{f64.promote\_f32}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{promote}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}} \\ & & | & \mbox{‘\texttt{f64.convert\_i32\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}} \\ & & | & \mbox{‘\texttt{f64.convert\_i32\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}} \\ & & | & \mbox{‘\texttt{f64.convert\_i64\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}} \\ & & | & \mbox{‘\texttt{f64.convert\_i64\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}} \\ & & | & \mbox{‘\texttt{i32.reinterpret\_f32}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{reinterpret}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}} \\ & & | & \mbox{‘\texttt{i64.reinterpret\_f64}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{reinterpret}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}} \\ & & | & \mbox{‘\texttt{f32.reinterpret\_i32}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{reinterpret}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}} \\ & & | & \mbox{‘\texttt{f64.reinterpret\_i64}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}~{.}~\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{reinterpret}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}} \\ \end{array}\end{split}\]

Vector Instructions

Vector constant instructions have a mandatory shape descriptor, which determines how the following values are parsed.

\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \dots \\ & & | & \mbox{‘\texttt{v128.const}’}~~\mbox{‘\texttt{i8x16}’}~~{c^\ast}{:}{{\href{../text/values.html#text-int}{\mathtt{i8}}}^{16}} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}{.}\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{const}}~{{{{\href{../exec/numerics.html#aux-bytes}{\mathrm{bytes}}}}_{{\href{../syntax/types.html#syntax-numtype}{\mathsf{i}}}{128}}^{{-1}}}}{({\href{../syntax/conventions.html#notation-concat}{\bigoplus}}\, {{{\href{../exec/numerics.html#aux-bytes}{\mathrm{bytes}}}}_{{\href{../syntax/types.html#syntax-numtype}{\mathsf{i}}}{8}}(c)^\ast})} \\ & & | & \mbox{‘\texttt{v128.const}’}~~\mbox{‘\texttt{i16x8}’}~~{c^\ast}{:}{{\href{../text/values.html#text-int}{\mathtt{i16}}}^{8}} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}{.}\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{const}}~{{{{\href{../exec/numerics.html#aux-bytes}{\mathrm{bytes}}}}_{{\href{../syntax/types.html#syntax-numtype}{\mathsf{i}}}{128}}^{{-1}}}}{({\href{../syntax/conventions.html#notation-concat}{\bigoplus}}\, {{{\href{../exec/numerics.html#aux-bytes}{\mathrm{bytes}}}}_{{\href{../syntax/types.html#syntax-numtype}{\mathsf{i}}}{16}}(c)^\ast})} \\ & & | & \mbox{‘\texttt{v128.const}’}~~\mbox{‘\texttt{i32x4}’}~~{c^\ast}{:}{{\href{../text/values.html#text-int}{\mathtt{i32}}}^{4}} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}{.}\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{const}}~{{{{\href{../exec/numerics.html#aux-bytes}{\mathrm{bytes}}}}_{{\href{../syntax/types.html#syntax-numtype}{\mathsf{i}}}{128}}^{{-1}}}}{({\href{../syntax/conventions.html#notation-concat}{\bigoplus}}\, {{{\href{../exec/numerics.html#aux-bytes}{\mathrm{bytes}}}}_{{\href{../syntax/types.html#syntax-numtype}{\mathsf{i}}}{32}}(c)^\ast})} \\ & & | & \mbox{‘\texttt{v128.const}’}~~\mbox{‘\texttt{i64x2}’}~~{c^\ast}{:}{{\href{../text/values.html#text-int}{\mathtt{i64}}}^{2}} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}{.}\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{const}}~{{{{\href{../exec/numerics.html#aux-bytes}{\mathrm{bytes}}}}_{{\href{../syntax/types.html#syntax-numtype}{\mathsf{i}}}{128}}^{{-1}}}}{({\href{../syntax/conventions.html#notation-concat}{\bigoplus}}\, {{{\href{../exec/numerics.html#aux-bytes}{\mathrm{bytes}}}}_{{\href{../syntax/types.html#syntax-numtype}{\mathsf{i}}}{64}}(c)^\ast})} \\ & & | & \mbox{‘\texttt{v128.const}’}~~\mbox{‘\texttt{f32x4}’}~~{c^\ast}{:}{{\href{../text/values.html#text-float}{\mathtt{f32}}}^{4}} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}{.}\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{const}}~{{{{\href{../exec/numerics.html#aux-bytes}{\mathrm{bytes}}}}_{{\href{../syntax/types.html#syntax-numtype}{\mathsf{i}}}{128}}^{{-1}}}}{({\href{../syntax/conventions.html#notation-concat}{\bigoplus}}\, {{{\href{../exec/numerics.html#aux-bytes}{\mathrm{bytes}}}}_{{\href{../syntax/types.html#syntax-numtype}{\mathsf{f}}}{32}}(c)^\ast})} \\ & & | & \mbox{‘\texttt{v128.const}’}~~\mbox{‘\texttt{f64x2}’}~~{c^\ast}{:}{{\href{../text/values.html#text-float}{\mathtt{f64}}}^{2}} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}{.}\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{const}}~{{{{\href{../exec/numerics.html#aux-bytes}{\mathrm{bytes}}}}_{{\href{../syntax/types.html#syntax-numtype}{\mathsf{i}}}{128}}^{{-1}}}}{({\href{../syntax/conventions.html#notation-concat}{\bigoplus}}\, {{{\href{../exec/numerics.html#aux-bytes}{\mathrm{bytes}}}}_{{\href{../syntax/types.html#syntax-numtype}{\mathsf{f}}}{64}}(c)^\ast})} \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \dots \\ & & | & \mbox{‘\texttt{i8x16.shuffle}’}~~{i^\ast}{:}{{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}}^{16}} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}{.}\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shuffle}}~{i^\ast} \\ & & | & \mbox{‘\texttt{i8x16.swizzle}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{swizzle}} \\ & & | & \mbox{‘\texttt{i8x16.relaxed\_swizzle}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_swizzle}} \\ & & | & \mbox{‘\texttt{i8x16.splat}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}{.}\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{splat}} \\ & & | & \mbox{‘\texttt{i16x8.splat}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}{.}\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{splat}} \\ & & | & \mbox{‘\texttt{i32x4.splat}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}{.}\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{splat}} \\ & & | & \mbox{‘\texttt{i64x2.splat}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}{.}\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{splat}} \\ & & | & \mbox{‘\texttt{f32x4.splat}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}{.}\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{splat}} \\ & & | & \mbox{‘\texttt{f64x2.splat}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}{.}\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{splat}} \\ & & | & \mbox{‘\texttt{i8x16.extract\_lane\_s}’}~~i{:}{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}{.}\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extract\_lane}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}}~i \\ & & | & \mbox{‘\texttt{i8x16.extract\_lane\_u}’}~~i{:}{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}{.}\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extract\_lane}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}}~i \\ & & | & \mbox{‘\texttt{i16x8.extract\_lane\_s}’}~~i{:}{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}{.}\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extract\_lane}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}}~i \\ & & | & \mbox{‘\texttt{i16x8.extract\_lane\_u}’}~~i{:}{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}{.}\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extract\_lane}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}}~i \\ & & | & \mbox{‘\texttt{i32x4.extract\_lane}’}~~i{:}{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}{.}\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extract\_lane}}~i \\ & & | & \mbox{‘\texttt{i64x2.extract\_lane}’}~~i{:}{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}{.}\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extract\_lane}}~i \\ & & | & \mbox{‘\texttt{f32x4.extract\_lane}’}~~i{:}{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}{.}\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extract\_lane}}~i \\ & & | & \mbox{‘\texttt{f64x2.extract\_lane}’}~~i{:}{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}{.}\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extract\_lane}}~i \\ & & | & \mbox{‘\texttt{i8x16.replace\_lane}’}~~i{:}{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}{.}\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{replace\_lane}}~i \\ & & | & \mbox{‘\texttt{i16x8.replace\_lane}’}~~i{:}{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}{.}\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{replace\_lane}}~i \\ & & | & \mbox{‘\texttt{i32x4.replace\_lane}’}~~i{:}{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}{.}\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{replace\_lane}}~i \\ & & | & \mbox{‘\texttt{i64x2.replace\_lane}’}~~i{:}{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}{.}\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{replace\_lane}}~i \\ & & | & \mbox{‘\texttt{f32x4.replace\_lane}’}~~i{:}{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}{.}\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{replace\_lane}}~i \\ & & | & \mbox{‘\texttt{f64x2.replace\_lane}’}~~i{:}{\href{../text/instructions.html#text-laneidx}{\mathtt{laneidx}}} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}{.}\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{replace\_lane}}~i \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \dots \\ & & | & \mbox{‘\texttt{v128.any\_true}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{any\_true}} \\ & & | & \mbox{‘\texttt{v128.not}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{not}} \\ & & | & \mbox{‘\texttt{v128.and}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{and}} \\ & & | & \mbox{‘\texttt{v128.andnot}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{andnot}} \\ & & | & \mbox{‘\texttt{v128.or}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{or}} \\ & & | & \mbox{‘\texttt{v128.xor}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{xor}} \\ & & | & \mbox{‘\texttt{v128.bitselect}’} & \quad\Rightarrow\quad{} & \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{bitselect}} \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \dots \\ & & | & \mbox{‘\texttt{i8x16.all\_true}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{all\_true}} \\ & & | & \mbox{‘\texttt{i8x16.eq}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{eq}} \\ & & | & \mbox{‘\texttt{i8x16.ne}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ne}} \\ & & | & \mbox{‘\texttt{i8x16.lt\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{lt}} \\ & & | & \mbox{‘\texttt{i8x16.lt\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{lt}} \\ & & | & \mbox{‘\texttt{i8x16.gt\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{gt}} \\ & & | & \mbox{‘\texttt{i8x16.gt\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{gt}} \\ & & | & \mbox{‘\texttt{i8x16.le\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{le}} \\ & & | & \mbox{‘\texttt{i8x16.le\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{le}} \\ & & | & \mbox{‘\texttt{i8x16.ge\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ge}} \\ & & | & \mbox{‘\texttt{i8x16.ge\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ge}} \\ & & | & \mbox{‘\texttt{i8x16.abs}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{abs}} \\ & & | & \mbox{‘\texttt{i8x16.neg}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{neg}} \\ & & | & \mbox{‘\texttt{i8x16.popcnt}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{popcnt}} \\ & & | & \mbox{‘\texttt{i8x16.add}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add}} \\ & & | & \mbox{‘\texttt{i8x16.add\_sat\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add\_sat}} \\ & & | & \mbox{‘\texttt{i8x16.add\_sat\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add\_sat}} \\ & & | & \mbox{‘\texttt{i8x16.sub}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub}} \\ & & | & \mbox{‘\texttt{i8x16.sub\_sat\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub\_sat}} \\ & & | & \mbox{‘\texttt{i8x16.sub\_sat\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub\_sat}} \\ & & | & \mbox{‘\texttt{i8x16.min\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{min}} \\ & & | & \mbox{‘\texttt{i8x16.min\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{min}} \\ & & | & \mbox{‘\texttt{i8x16.max\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{max}} \\ & & | & \mbox{‘\texttt{i8x16.max\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{max}} \\ & & | & \mbox{‘\texttt{i8x16.avgr\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{avgr}} \\ & & | & \mbox{‘\texttt{i8x16.relaxed\_laneselect}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_laneselect}} \\ & & | & \mbox{‘\texttt{i8x16.shl}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shl}} \\ & & | & \mbox{‘\texttt{i8x16.shr\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shr}} \\ & & | & \mbox{‘\texttt{i8x16.shr\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shr}} \\ & & | & \mbox{‘\texttt{i8x16.bitmask}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}{.}\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{bitmask}} \\ & & | & \mbox{‘\texttt{i8x16.narrow\_i16x8\_s}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}{.}\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{narrow}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\ & & | & \mbox{‘\texttt{i8x16.narrow\_i16x8\_u}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}{.}\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{narrow}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \dots \\ & & | & \mbox{‘\texttt{i16x8.all\_true}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{all\_true}} \\ & & | & \mbox{‘\texttt{i16x8.eq}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{eq}} \\ & & | & \mbox{‘\texttt{i16x8.ne}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ne}} \\ & & | & \mbox{‘\texttt{i16x8.lt\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{lt}} \\ & & | & \mbox{‘\texttt{i16x8.lt\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{lt}} \\ & & | & \mbox{‘\texttt{i16x8.gt\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{gt}} \\ & & | & \mbox{‘\texttt{i16x8.gt\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{gt}} \\ & & | & \mbox{‘\texttt{i16x8.le\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{le}} \\ & & | & \mbox{‘\texttt{i16x8.le\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{le}} \\ & & | & \mbox{‘\texttt{i16x8.ge\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ge}} \\ & & | & \mbox{‘\texttt{i16x8.ge\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ge}} \\ & & | & \mbox{‘\texttt{i16x8.abs}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{abs}} \\ & & | & \mbox{‘\texttt{i16x8.neg}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{neg}} \\ & & | & \mbox{‘\texttt{i16x8.add}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add}} \\ & & | & \mbox{‘\texttt{i16x8.add\_sat\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add\_sat}} \\ & & | & \mbox{‘\texttt{i16x8.add\_sat\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add\_sat}} \\ & & | & \mbox{‘\texttt{i16x8.sub}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub}} \\ & & | & \mbox{‘\texttt{i16x8.sub\_sat\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub\_sat}} \\ & & | & \mbox{‘\texttt{i16x8.sub\_sat\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub\_sat}} \\ & & | & \mbox{‘\texttt{i16x8.mul}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{mul}} \\ & & | & \mbox{‘\texttt{i16x8.min\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{min}} \\ & & | & \mbox{‘\texttt{i16x8.min\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{min}} \\ & & | & \mbox{‘\texttt{i16x8.max\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{max}} \\ & & | & \mbox{‘\texttt{i16x8.max\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{max}} \\ & & | & \mbox{‘\texttt{i16x8.avgr\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{avgr}} \\ & & | & \mbox{‘\texttt{i16x8.q15mulr\_sat\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{q{\scriptstyle15}mulr\_sat}} \\ & & | & \mbox{‘\texttt{i16x8.relaxed\_q15mulr\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_q15mulr}} \\ & & | & \mbox{‘\texttt{i16x8.relaxed\_laneselect}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_laneselect}} \\ & & | & \mbox{‘\texttt{i16x8.shl}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shl}} \\ & & | & \mbox{‘\texttt{i16x8.shr\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shr}} \\ & & | & \mbox{‘\texttt{i16x8.shr\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shr}} \\ & & | & \mbox{‘\texttt{i16x8.bitmask}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}{.}\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{bitmask}} \\ & & | & \mbox{‘\texttt{i16x8.narrow\_i32x4\_s}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}{.}\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{narrow}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\ & & | & \mbox{‘\texttt{i16x8.narrow\_i32x4\_u}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}{.}\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{narrow}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \dots \\ & & | & \mbox{‘\texttt{i32x4.all\_true}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{all\_true}} \\ & & | & \mbox{‘\texttt{i32x4.eq}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{eq}} \\ & & | & \mbox{‘\texttt{i32x4.ne}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ne}} \\ & & | & \mbox{‘\texttt{i32x4.lt\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{lt}} \\ & & | & \mbox{‘\texttt{i32x4.lt\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{lt}} \\ & & | & \mbox{‘\texttt{i32x4.gt\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{gt}} \\ & & | & \mbox{‘\texttt{i32x4.gt\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{gt}} \\ & & | & \mbox{‘\texttt{i32x4.le\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{le}} \\ & & | & \mbox{‘\texttt{i32x4.le\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{le}} \\ & & | & \mbox{‘\texttt{i32x4.ge\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ge}} \\ & & | & \mbox{‘\texttt{i32x4.ge\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ge}} \\ & & | & \mbox{‘\texttt{i32x4.abs}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{abs}} \\ & & | & \mbox{‘\texttt{i32x4.neg}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{neg}} \\ & & | & \mbox{‘\texttt{i32x4.add}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add}} \\ & & | & \mbox{‘\texttt{i32x4.sub}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub}} \\ & & | & \mbox{‘\texttt{i32x4.mul}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{mul}} \\ & & | & \mbox{‘\texttt{i32x4.min\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{min}} \\ & & | & \mbox{‘\texttt{i32x4.min\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{min}} \\ & & | & \mbox{‘\texttt{i32x4.max\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{max}} \\ & & | & \mbox{‘\texttt{i32x4.max\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{max}} \\ & & | & \mbox{‘\texttt{i32x4.relaxed\_laneselect}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_laneselect}} \\ & & | & \mbox{‘\texttt{i32x4.shl}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shl}} \\ & & | & \mbox{‘\texttt{i32x4.shr\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shr}} \\ & & | & \mbox{‘\texttt{i32x4.shr\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shr}} \\ & & | & \mbox{‘\texttt{i32x4.bitmask}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}{.}\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{bitmask}} \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \dots \\ & & | & \mbox{‘\texttt{i64x2.all\_true}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{all\_true}} \\ & & | & \mbox{‘\texttt{i64x2.eq}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{eq}} \\ & & | & \mbox{‘\texttt{i64x2.ne}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ne}} \\ & & | & \mbox{‘\texttt{i64x2.lt\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{lt}} \\ & & | & \mbox{‘\texttt{i64x2.gt\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{gt}} \\ & & | & \mbox{‘\texttt{i64x2.le\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{le}} \\ & & | & \mbox{‘\texttt{i64x2.ge\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ge}} \\ & & | & \mbox{‘\texttt{i64x2.abs}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{abs}} \\ & & | & \mbox{‘\texttt{i64x2.neg}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{neg}} \\ & & | & \mbox{‘\texttt{i64x2.add}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add}} \\ & & | & \mbox{‘\texttt{i64x2.sub}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub}} \\ & & | & \mbox{‘\texttt{i64x2.mul}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{mul}} \\ & & | & \mbox{‘\texttt{i64x2.relaxed\_laneselect}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_laneselect}} \\ & & | & \mbox{‘\texttt{i64x2.shl}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shl}} \\ & & | & \mbox{‘\texttt{i64x2.shr\_s}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shr}} \\ & & | & \mbox{‘\texttt{i64x2.shr\_u}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shr}} \\ & & | & \mbox{‘\texttt{i64x2.bitmask}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}{.}\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{bitmask}} \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \dots \\ & & | & \mbox{‘\texttt{f32x4.eq}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{eq}} \\ & & | & \mbox{‘\texttt{f32x4.ne}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ne}} \\ & & | & \mbox{‘\texttt{f32x4.lt}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{lt}} \\ & & | & \mbox{‘\texttt{f32x4.gt}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{gt}} \\ & & | & \mbox{‘\texttt{f32x4.le}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{le}} \\ & & | & \mbox{‘\texttt{f32x4.ge}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ge}} \\ & & | & \mbox{‘\texttt{f32x4.abs}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{abs}} \\ & & | & \mbox{‘\texttt{f32x4.neg}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{neg}} \\ & & | & \mbox{‘\texttt{f32x4.sqrt}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sqrt}} \\ & & | & \mbox{‘\texttt{f32x4.ceil}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ceil}} \\ & & | & \mbox{‘\texttt{f32x4.floor}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{floor}} \\ & & | & \mbox{‘\texttt{f32x4.trunc}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{trunc}} \\ & & | & \mbox{‘\texttt{f32x4.nearest}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{nearest}} \\ & & | & \mbox{‘\texttt{f32x4.add}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add}} \\ & & | & \mbox{‘\texttt{f32x4.sub}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub}} \\ & & | & \mbox{‘\texttt{f32x4.mul}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{mul}} \\ & & | & \mbox{‘\texttt{f32x4.div}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{div}} \\ & & | & \mbox{‘\texttt{f32x4.min}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{min}} \\ & & | & \mbox{‘\texttt{f32x4.max}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{max}} \\ & & | & \mbox{‘\texttt{f32x4.pmin}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{pmin}} \\ & & | & \mbox{‘\texttt{f32x4.pmax}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{pmax}} \\ & & | & \mbox{‘\texttt{f32x4.relaxed\_min}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_min}} \\ & & | & \mbox{‘\texttt{f32x4.relaxed\_max}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_max}} \\ & & | & \mbox{‘\texttt{f32x4.relaxed\_madd}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_madd}} \\ & & | & \mbox{‘\texttt{f32x4.relaxed\_nmadd}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_nmadd}} \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \dots \\ & & | & \mbox{‘\texttt{f64x2.eq}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{eq}} \\ & & | & \mbox{‘\texttt{f64x2.ne}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ne}} \\ & & | & \mbox{‘\texttt{f64x2.lt}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{lt}} \\ & & | & \mbox{‘\texttt{f64x2.gt}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{gt}} \\ & & | & \mbox{‘\texttt{f64x2.le}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{le}} \\ & & | & \mbox{‘\texttt{f64x2.ge}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ge}} \\ & & | & \mbox{‘\texttt{f64x2.abs}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{abs}} \\ & & | & \mbox{‘\texttt{f64x2.neg}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{neg}} \\ & & | & \mbox{‘\texttt{f64x2.sqrt}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sqrt}} \\ & & | & \mbox{‘\texttt{f64x2.ceil}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ceil}} \\ & & | & \mbox{‘\texttt{f64x2.floor}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{floor}} \\ & & | & \mbox{‘\texttt{f64x2.trunc}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{trunc}} \\ & & | & \mbox{‘\texttt{f64x2.nearest}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{nearest}} \\ & & | & \mbox{‘\texttt{f64x2.add}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add}} \\ & & | & \mbox{‘\texttt{f64x2.sub}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub}} \\ & & | & \mbox{‘\texttt{f64x2.mul}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{mul}} \\ & & | & \mbox{‘\texttt{f64x2.div}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{div}} \\ & & | & \mbox{‘\texttt{f64x2.min}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{min}} \\ & & | & \mbox{‘\texttt{f64x2.max}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{max}} \\ & & | & \mbox{‘\texttt{f64x2.pmin}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{pmin}} \\ & & | & \mbox{‘\texttt{f64x2.pmax}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{pmax}} \\ & & | & \mbox{‘\texttt{f64x2.relaxed\_min}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_min}} \\ & & | & \mbox{‘\texttt{f64x2.relaxed\_max}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_max}} \\ & & | & \mbox{‘\texttt{f64x2.relaxed\_madd}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_madd}} \\ & & | & \mbox{‘\texttt{f64x2.relaxed\_nmadd}’} & \quad\Rightarrow\quad{} & {\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_nmadd}} \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \dots \\ & & | & \mbox{‘\texttt{i16x8.extend\_low\_i8x16\_s}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}} \\ & & | & \mbox{‘\texttt{i16x8.extend\_low\_i8x16\_u}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}} \\ & & | & \mbox{‘\texttt{i16x8.extend\_high\_i8x16\_s}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}} \\ & & | & \mbox{‘\texttt{i16x8.extend\_high\_i8x16\_u}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}} \\ & & | & \mbox{‘\texttt{i32x4.extend\_low\_i16x8\_s}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}} \\ & & | & \mbox{‘\texttt{i32x4.extend\_low\_i16x8\_u}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}} \\ & & | & \mbox{‘\texttt{i32x4.extend\_high\_i16x8\_s}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}} \\ & & | & \mbox{‘\texttt{i32x4.extend\_high\_i16x8\_u}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}} \\ & & | & \mbox{‘\texttt{i32x4.trunc\_sat\_f32x4\_s}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{trunc\_sat}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}} \\ & & | & \mbox{‘\texttt{i32x4.trunc\_sat\_f32x4\_u}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{trunc\_sat}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}} \\ & & | & \mbox{‘\texttt{i32x4.trunc\_sat\_f64x2\_s\_zero}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{trunc\_sat}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}} \\ & & | & \mbox{‘\texttt{i32x4.trunc\_sat\_f64x2\_u\_zero}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{trunc\_sat}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}} \\ & & | & \mbox{‘\texttt{i32x4.relaxed\_trunc\_f32x4\_s}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_trunc}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}} \\ & & | & \mbox{‘\texttt{i32x4.relaxed\_trunc\_f32x4\_u}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_trunc}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}} \\ & & | & \mbox{‘\texttt{i32x4.relaxed\_trunc\_f64x2\_s\_zero}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_trunc}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}} \\ & & | & \mbox{‘\texttt{i32x4.relaxed\_trunc\_f64x2\_u\_zero}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_trunc}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}} \\ & & | & \mbox{‘\texttt{i64x2.extend\_low\_i32x4\_s}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}} \\ & & | & \mbox{‘\texttt{i64x2.extend\_low\_i32x4\_u}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}} \\ & & | & \mbox{‘\texttt{i64x2.extend\_high\_i32x4\_s}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}} \\ & & | & \mbox{‘\texttt{i64x2.extend\_high\_i32x4\_u}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}} \\ & & | & \mbox{‘\texttt{f32x4.demote\_f64x2\_zero}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~{\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{demote}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{zero}}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}} \\ & & | & \mbox{‘\texttt{f32x4.convert\_i32x4\_s}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{convert}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}} \\ & & | & \mbox{‘\texttt{f32x4.convert\_i32x4\_u}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{convert}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}} \\ & & | & \mbox{‘\texttt{f64x2.promote\_low\_f32x4}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~{\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{promote}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{low}}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}} \\ & & | & \mbox{‘\texttt{f64x2.convert\_low\_i32x4\_s}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{convert}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}} \\ & & | & \mbox{‘\texttt{f64x2.convert\_low\_i32x4\_u}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{convert}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}} \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \dots \\ & & | & \mbox{‘\texttt{i16x8.extadd\_pairwise\_i8x16\_s}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extadd\_pairwise}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}} \\ & & | & \mbox{‘\texttt{i16x8.extadd\_pairwise\_i8x16\_u}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extadd\_pairwise}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}} \\ & & | & \mbox{‘\texttt{i16x8.extmul\_low\_i8x16\_s}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}} \\ & & | & \mbox{‘\texttt{i16x8.extmul\_low\_i8x16\_u}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}} \\ & & | & \mbox{‘\texttt{i16x8.extmul\_high\_i8x16\_s}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}} \\ & & | & \mbox{‘\texttt{i16x8.extmul\_high\_i8x16\_u}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}} \\ & & | & \mbox{‘\texttt{i32x4.extadd\_pairwise\_i16x8\_s}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extadd\_pairwise}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}} \\ & & | & \mbox{‘\texttt{i32x4.extadd\_pairwise\_i16x8\_u}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extadd\_pairwise}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}} \\ & & | & \mbox{‘\texttt{i32x4.extmul\_low\_i16x8\_s}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}} \\ & & | & \mbox{‘\texttt{i32x4.extmul\_low\_i16x8\_u}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}} \\ & & | & \mbox{‘\texttt{i32x4.extmul\_high\_i16x8\_s}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}} \\ & & | & \mbox{‘\texttt{i32x4.extmul\_high\_i16x8\_u}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}} \\ & & | & \mbox{‘\texttt{i32x4.dot\_i16x8\_s}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{dot}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}} \\ & & | & \mbox{‘\texttt{i64x2.extmul\_low\_i32x4\_s}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}} \\ & & | & \mbox{‘\texttt{i64x2.extmul\_low\_i32x4\_u}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}} \\ & & | & \mbox{‘\texttt{i64x2.extmul\_high\_i32x4\_s}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}} \\ & & | & \mbox{‘\texttt{i64x2.extmul\_high\_i32x4\_u}’} & \quad\Rightarrow\quad{} & {{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 2}}}~{.}~\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 4}}}} \\ \end{array}\end{split}\]

Folded Instructions

Instructions can be written as S-expressions by grouping them into folded form. In that notation, an instruction is wrapped in parentheses and optionally includes nested folded instructions to indicate its operands.

In the case of block instructions, the folded form omits the \(\mbox{‘\texttt{end}’}\) delimiter. For \(\mathsf{if}\) instructions, both branches have to be wrapped into nested S-expressions, headed by the keywords \(\mbox{‘\texttt{then}’}\) and \(\mbox{‘\texttt{else}’}\).

The set of all phrases defined by the following abbreviations recursively forms the auxiliary syntactic class \({\mathtt{foldedinstr}}\). Such a folded instruction can appear anywhere a regular instruction can.

\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-foldedinstr}{\mathtt{foldedinstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & \mbox{‘\texttt{{(}}’}~~{{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{{\href{../text/instructions.html#text-instrs}{\mathtt{instrs}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~\mbox{‘\texttt{{)}}’} & \quad\equiv\quad{} & & \\ &&& \multicolumn{4}{@{}l@{}}{\quad \begin{array}[t]{@{}l@{}} {{\href{../text/instructions.html#text-instrs}{\mathtt{instrs}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}}}_{{\href{../text/conventions.html#text-context}{I}}} \\ \end{array} } \\ & & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{block}’}~~{{\href{../text/instructions.html#text-label}{\mathtt{label}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{{\href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{{\href{../text/instructions.html#text-instrs}{\mathtt{instrs}}}}_{{\href{../text/conventions.html#text-context}{I}'}}~~\mbox{‘\texttt{{)}}’} & \quad\equiv\quad{} & & \\ &&& \multicolumn{4}{@{}l@{}}{\quad \begin{array}[t]{@{}l@{}} \mbox{‘\texttt{block}’}~~{{\href{../text/instructions.html#text-label}{\mathtt{label}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{{\href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{{\href{../text/instructions.html#text-instrs}{\mathtt{instrs}}}}_{{\href{../text/conventions.html#text-context}{I}'}}~~\mbox{‘\texttt{end}’} \\ \end{array} } \\ & & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{loop}’}~~{{\href{../text/instructions.html#text-label}{\mathtt{label}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{{\href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{{\href{../text/instructions.html#text-instrs}{\mathtt{instrs}}}}_{{\href{../text/conventions.html#text-context}{I}'}}~~\mbox{‘\texttt{{)}}’} & \quad\equiv\quad{} & & \\ &&& \multicolumn{4}{@{}l@{}}{\quad \begin{array}[t]{@{}l@{}} \mbox{‘\texttt{loop}’}~~{{\href{../text/instructions.html#text-label}{\mathtt{label}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{{\href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{{\href{../text/instructions.html#text-instrs}{\mathtt{instrs}}}}_{{\href{../text/conventions.html#text-context}{I}'}}~~\mbox{‘\texttt{end}’} \\ \end{array} } \\ & & | & \begin{array}[t]{@{}l@{}} \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{if}’}~~{{\href{../text/instructions.html#text-label}{\mathtt{label}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{{\href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{{{\href{../text/instructions.html#text-foldedinstr}{\mathtt{foldedinstr}}}}_{{\href{../text/conventions.html#text-context}{I}}}^\ast} \\ \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{then}’}~~{{\mathit{in}}_1^\ast}{:}{{\href{../text/instructions.html#text-instrs}{\mathtt{instrs}}}}_{{\href{../text/conventions.html#text-context}{I}'}}~~\mbox{‘\texttt{{)}}’}~~{(\mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{else}’}~~{{\mathit{in}}_2^\ast}{:}{{\href{../text/instructions.html#text-instrs}{\mathtt{instrs}}}}_{{\href{../text/conventions.html#text-context}{I}'}}~~\mbox{‘\texttt{{)}}’})^?}~~\mbox{‘\texttt{{)}}’} \end{array} & \quad\equiv\quad{} & & \\ &&& \multicolumn{4}{@{}l@{}}{\quad \begin{array}[t]{@{}l@{}} {{{\href{../text/instructions.html#text-foldedinstr}{\mathtt{foldedinstr}}}}_{{\href{../text/conventions.html#text-context}{I}}}^\ast}~~\mbox{‘\texttt{if}’}~~{{\href{../text/instructions.html#text-label}{\mathtt{label}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{{\href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{{\mathit{in}}_1^\ast}{:}{{\href{../text/instructions.html#text-instrs}{\mathtt{instrs}}}}_{{\href{../text/conventions.html#text-context}{I}'}}~~{(\mbox{‘\texttt{else}’}~~{{\mathit{in}}_2^\ast}{:}{{\href{../text/instructions.html#text-instrs}{\mathtt{instrs}}}}_{{\href{../text/conventions.html#text-context}{I}'}})^?}~~\mbox{‘\texttt{end}’} \\ \end{array} } \\ & & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{try\_table}’}~~{{\href{../text/instructions.html#text-label}{\mathtt{label}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{{\href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{{{\href{../text/instructions.html#text-catch}{\mathtt{catch}}}}_{{\href{../text/conventions.html#text-context}{I}}}^\ast}~~{{\href{../text/instructions.html#text-instrs}{\mathtt{instrs}}}}_{{\href{../text/conventions.html#text-context}{I}'}}~~\mbox{‘\texttt{{)}}’} & \quad\equiv\quad{} & & \\ &&& \multicolumn{4}{@{}l@{}}{\quad \begin{array}[t]{@{}l@{}} \mbox{‘\texttt{try\_table}’}~~{{\href{../text/instructions.html#text-label}{\mathtt{label}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{{\href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}}}_{{\href{../text/conventions.html#text-context}{I}}}~~{{{\href{../text/instructions.html#text-catch}{\mathtt{catch}}}}_{{\href{../text/conventions.html#text-context}{I}}}^\ast}~~{{\href{../text/instructions.html#text-instrs}{\mathtt{instrs}}}}_{{\href{../text/conventions.html#text-context}{I}'}}~~\mbox{‘\texttt{end}’} \\ \end{array} } \\ \end{array}\end{split}\]

Note

For example, the instruction sequence

\[\mathtt{(local.get~\$x)~(i32.const~2)~i32.add~(i32.const~3)~i32.mul}\]

can be folded into

\[\mathtt{(i32.mul~(i32.add~(local.get~\$x)~(i32.const~2))~(i32.const~3))}\]

Folded instructions are solely syntactic sugar, no additional syntactic or type-based checking is implied.

Expressions

Expressions are written as instruction sequences.

\[\begin{split}\begin{array}[t]{@{}l@{}rrl@{}l@{}l@{}l@{}} & {{\href{../text/instructions.html#text-expr}{\mathtt{expr}}}}_{{\href{../text/conventions.html#text-context}{I}}} & ::= & {{\mathit{in}}^\ast}{:}{{\href{../text/instructions.html#text-instrs}{\mathtt{instrs}}}}_{{\href{../text/conventions.html#text-context}{I}}} & \quad\Rightarrow\quad{} & {{\mathit{in}}^\ast} \\ \end{array}\end{split}\]