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{align}}}}_{N}~~m{:}{\href{../text/instructions.html#text-memarg}{\mathtt{offset}}} & \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{=}}β}~~m{:}{\href{../text/values.html#text-int}{\mathtt{u64}}} & \quad\Rightarrow\quad{} & m \\
& & | & \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{} & n & \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}}}}_{2}~~{\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}}}}_{4}~~{\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}}}}_{8}~~{\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}} \\
\end{array}\end{split}\]
Aggregate 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.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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{{\scriptstyle 8}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{{\scriptstyle 16}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{{\scriptstyle 8}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{{\scriptstyle 16}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{{\scriptstyle 32}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-sx}{\mathsf{u}}}}{\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/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-sx}{\mathsf{u}}}}{\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/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-sx}{\mathsf{u}}}}{\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/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-sx}{\mathsf{u}}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}} \\
& & | & \mbox{β\texttt{i64.extend\_i32\_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/instructions.html#syntax-sx}{\mathsf{s}}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}} \\
& & | & \mbox{β\texttt{i64.extend\_i32\_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/instructions.html#syntax-sx}{\mathsf{u}}}}{\mathsf{\_}}{\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}} \\
& & | & \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/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-sx}{\mathsf{u}}}}{\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/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-sx}{\mathsf{u}}}}{\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/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-sx}{\mathsf{u}}}}{\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/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-sx}{\mathsf{u}}}}{\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/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-sx}{\mathsf{u}}}}{\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/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-sx}{\mathsf{u}}}}{\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/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-sx}{\mathsf{u}}}}{\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/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-sx}{\mathsf{u}}}}{\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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}} \\
& & | & \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}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}} \\
& & | & \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/instructions.html#syntax-instr-vec}{\mathsf{low}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-instr-vec}{\mathsf{low}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}}}{\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/instructions.html#syntax-instr-vec}{\mathsf{high}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-instr-vec}{\mathsf{high}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}}}{\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/instructions.html#syntax-instr-vec}{\mathsf{low}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-instr-vec}{\mathsf{low}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}}}{\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/instructions.html#syntax-instr-vec}{\mathsf{high}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-instr-vec}{\mathsf{high}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}}}{\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/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-sx}{\mathsf{u}}}}{\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/instructions.html#syntax-sx}{\mathsf{s}}}{\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{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/instructions.html#syntax-sx}{\mathsf{u}}}{\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{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/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-sx}{\mathsf{u}}}}{\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/instructions.html#syntax-sx}{\mathsf{s}}}{\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{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/instructions.html#syntax-sx}{\mathsf{u}}}{\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{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/instructions.html#syntax-instr-vec}{\mathsf{low}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-instr-vec}{\mathsf{low}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}}}{\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/instructions.html#syntax-instr-vec}{\mathsf{high}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-instr-vec}{\mathsf{high}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}}}{\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/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-sx}{\mathsf{u}}}}{\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/instructions.html#syntax-instr-vec}{\mathsf{low}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-instr-vec}{\mathsf{low}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}}}{\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/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-sx}{\mathsf{u}}}}{\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/instructions.html#syntax-instr-vec}{\mathsf{low}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-instr-vec}{\mathsf{low}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}}}{\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/instructions.html#syntax-instr-vec}{\mathsf{high}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-instr-vec}{\mathsf{high}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle8}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 16}}}} \\
& & | & \mbox{β\texttt{i16x8.relaxed\_dot\_i8x16\_i7x16\_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\_dot}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-sx}{\mathsf{u}}}}{\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/instructions.html#syntax-instr-vec}{\mathsf{low}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-instr-vec}{\mathsf{low}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}}}{\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/instructions.html#syntax-instr-vec}{\mathsf{high}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-instr-vec}{\mathsf{high}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}}}{\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/instructions.html#syntax-sx}{\mathsf{s}}}}{\mathsf{\_}}{{\href{../syntax/types.html#syntax-storagetype}{\mathsf{i\scriptstyle16}}}{\href{../syntax/instructions.html#syntax-shape}{\mathsf{x}}}{\mathsf{{\scriptstyle 8}}}} \\
& & | & \mbox{β\texttt{i32x4.relaxed\_dot\_i8x16\_i7x16\_add\_s}β} ~\Rightarrow~ {\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\_dot\_add}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-instr-vec}{\mathsf{low}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-instr-vec}{\mathsf{low}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}}}{\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/instructions.html#syntax-instr-vec}{\mathsf{high}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{s}}}}{\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/instructions.html#syntax-instr-vec}{\mathsf{high}}}{\mathsf{\_}}{\href{../syntax/instructions.html#syntax-sx}{\mathsf{u}}}}{\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}\]