Instructions

Instructions are syntactically distinguished into plain and structured instructions.

\[\begin{split}\begin{array}{llclll} \def\mathdef2634#1{{}}\mathdef2634{instruction} & \href{../text/instructions.html#text-instr}{\mathtt{instr}}_I &::=& \mathit{in}{:}\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I &\Rightarrow& \mathit{in} \\ &&|& \mathit{in}{:}\href{../text/instructions.html#text-blockinstr}{\mathtt{blockinstr}}_I &\Rightarrow& \mathit{in} \\ \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}{llcllll} \def\mathdef2634#1{{}}\mathdef2634{label} & \href{../text/instructions.html#text-label}{\mathtt{label}}_I &::=& v{:}\href{../text/values.html#text-id}{\mathtt{id}} &\Rightarrow& v, \{\href{../text/conventions.html#text-context}{\mathsf{labels}}~v\} \href{../syntax/conventions.html#notation-compose}{\oplus} I & (\mathrel{\mbox{if}} v \notin I.\href{../text/conventions.html#text-context}{\mathsf{labels}}) \\ &&|& v{:}\href{../text/values.html#text-id}{\mathtt{id}} &\Rightarrow& v, \{\href{../text/conventions.html#text-context}{\mathsf{labels}}~v\} \href{../syntax/conventions.html#notation-compose}{\oplus} (I \href{../syntax/conventions.html#notation-replace}{\mathrel{\mbox{with}}} \href{../text/conventions.html#text-context}{\mathsf{labels}}[i] = \epsilon) & (\mathrel{\mbox{if}} I.\href{../text/conventions.html#text-context}{\mathsf{labels}}[i] = v) \\ &&|& \epsilon &\Rightarrow& \epsilon, \{\href{../text/conventions.html#text-context}{\mathsf{labels}}~(\epsilon)\} \href{../syntax/conventions.html#notation-compose}{\oplus} I \\ \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.

Control Instructions

Structured control instructions can bind an optional symbolic label identifier. The same label identifier may optionally be repeated after the corresponding \(\mathtt{end}\) or \(\mathtt{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}{llclll} \def\mathdef2634#1{{}}\mathdef2634{block type} & \href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}_I & \begin{array}[t]{@{}c@{}} ::= \\ | \\ \end{array} & \begin{array}[t]{@{}lcll@{}} (t{:}\href{../text/types.html#text-functype}{\mathtt{result}}_I)^? &\Rightarrow& t^? \\ x,I'{:}\href{../text/modules.html#text-typeuse}{\mathtt{typeuse}}_I &\Rightarrow& x & (\mathrel{\mbox{if}} I' = \{\href{../text/conventions.html#text-context}{\mathsf{locals}}~(\epsilon)^\ast\}) \\ \end{array} \\ \def\mathdef2634#1{{}}\mathdef2634{block instruction} & \href{../text/instructions.html#text-blockinstr}{\mathtt{blockinstr}}_I &::=& \def\mathdef2677#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2677{block}~~(v^?,I'){:}\href{../text/instructions.html#text-label}{\mathtt{label}}_I~~\mathit{bt}{:}\href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}_I~~(\mathit{in}{:}\href{../text/instructions.html#text-instr}{\mathtt{instr}}_{I'})^\ast~~\def\mathdef2678#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2678{end}~~{v'}^?{:}\href{../text/values.html#text-id}{\mathtt{id}}^? \\ &&&\qquad \Rightarrow\quad \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{block}}~\mathit{bt}~\mathit{in}^\ast~\href{../syntax/instructions.html#syntax-instr-control}{\mathsf{end}} \qquad\quad~~ (\mathrel{\mbox{if}} {v'}^? = \epsilon \vee {v'}^? = v^?) \\ &&|& \def\mathdef2679#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2679{loop}~~(v^?,I'){:}\href{../text/instructions.html#text-label}{\mathtt{label}}_I~~\mathit{bt}{:}\href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}_I~~(\mathit{in}{:}\href{../text/instructions.html#text-instr}{\mathtt{instr}}_{I'})^\ast~~\def\mathdef2680#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2680{end}~~{v'}^?{:}\href{../text/values.html#text-id}{\mathtt{id}}^? \\ &&&\qquad \Rightarrow\quad \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{loop}}~\mathit{bt}~\mathit{in}^\ast~\href{../syntax/instructions.html#syntax-instr-control}{\mathsf{end}} \qquad\qquad (\mathrel{\mbox{if}} {v'}^? = \epsilon \vee {v'}^? = v^?) \\ &&|& \def\mathdef2681#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2681{if}~~(v^?,I'){:}\href{../text/instructions.html#text-label}{\mathtt{label}}_I~~\mathit{bt}{:}\href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}_I~~(\mathit{in}_1{:}\href{../text/instructions.html#text-instr}{\mathtt{instr}}_{I'})^\ast~~ \def\mathdef2682#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2682{else}~~v_1^?{:}\href{../text/values.html#text-id}{\mathtt{id}}_1^?~~(\mathit{in}_2{:}\href{../text/instructions.html#text-instr}{\mathtt{instr}}_{I'})^\ast~~\def\mathdef2683#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2683{end}~~v_2^?{:}\href{../text/values.html#text-id}{\mathtt{id}}_2^? \\ &&&\qquad \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~\href{../syntax/instructions.html#syntax-instr-control}{\mathsf{end}} \qquad (\mathrel{\mbox{if}} v_1^? = \epsilon \vee v_1^? = v^?, v_2^? = \epsilon \vee v_2^? = v^?) \\ &&|& \def\mathdef2684#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2684{try\_table}~~I'{:}\href{../text/instructions.html#text-label}{\mathtt{label}}_I~~\mathit{bt}{:}\href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}~~(c{:}\href{../text/instructions.html#text-catch}{\mathtt{catch}}_I)^\ast~~(\mathit{in}{:}\href{../text/instructions.html#text-instr}{\mathtt{instr}}_{I'})^\ast~~\def\mathdef2685#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2685{end}~~\href{../text/values.html#text-id}{\mathtt{id}}^? \\ &&&\qquad \Rightarrow\quad \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{try\_table}}~\mathit{bt}~c^\ast~\mathit{in}^\ast~~\href{../syntax/instructions.html#syntax-instr-control}{\mathsf{end}} \qquad\qquad (\mathrel{\mbox{if}} \href{../text/values.html#text-id}{\mathtt{id}}^? = \epsilon \vee \href{../text/values.html#text-id}{\mathtt{id}}^? = \href{../text/instructions.html#text-label}{\mathtt{label}}) \\ \def\mathdef2634#1{{}}\mathdef2634{catch clause} & \href{../text/instructions.html#text-catch}{\mathtt{catch}}_I & \begin{array}[t]{@{}c@{}} ::= \\ | \\ | \\ | \\ \end{array} & \begin{array}[t]{@{}lcll@{}} \def\mathdef2686#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2686{(}~\def\mathdef2687#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2687{catch}~~x{:}\href{../text/modules.html#text-tagidx}{\mathtt{tagidx}}_I~~l{:}\href{../text/modules.html#text-labelidx}{\mathtt{labelidx}}_I~\def\mathdef2688#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2688{)} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{catch}}~x~l \\ \def\mathdef2689#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2689{(}~\def\mathdef2690#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2690{catch\_ref}~~x{:}\href{../text/modules.html#text-tagidx}{\mathtt{tagidx}}_I~~l{:}\href{../text/modules.html#text-labelidx}{\mathtt{labelidx}}_I~\def\mathdef2691#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2691{)} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{catch\_ref}}~x~l \\ \def\mathdef2692#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2692{(}~\def\mathdef2693#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2693{catch\_all}~~l{:}\href{../text/modules.html#text-labelidx}{\mathtt{labelidx}}_I~\def\mathdef2694#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2694{)} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{catch\_all}}~l \\ \def\mathdef2695#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2695{(}~\def\mathdef2696#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2696{catch\_all\_ref}~~l{:}\href{../text/modules.html#text-labelidx}{\mathtt{labelidx}}_I~\def\mathdef2697#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2697{)} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{catch\_all\_ref}}~l \\ \end{array} \\ \end{array}\end{split}\]

Note

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

All other control instruction are represented verbatim.

\[\begin{split}\begin{array}{llcllll} \def\mathdef2634#1{{}}\mathdef2634{plain instruction} & \href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I &::=& \def\mathdef2698#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2698{unreachable} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{unreachable}} \\ &&|& \def\mathdef2699#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2699{nop} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{nop}} \\ &&|& \def\mathdef2700#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2700{br}~~l{:}\href{../text/modules.html#text-labelidx}{\mathtt{labelidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{br}}~l \\ &&|& \def\mathdef2701#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2701{br\_if}~~l{:}\href{../text/modules.html#text-labelidx}{\mathtt{labelidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{br\_if}}~l \\ &&|& \def\mathdef2702#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2702{br\_table}~~l^\ast{:}\href{../text/conventions.html#text-list}{\mathtt{list}}(\href{../text/modules.html#text-labelidx}{\mathtt{labelidx}}_I)~~l_N{:}\href{../text/modules.html#text-labelidx}{\mathtt{labelidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{br\_table}}~l^\ast~l_N \\ &&|& \def\mathdef2703#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2703{br\_on\_null}~~l{:}\href{../text/modules.html#text-labelidx}{\mathtt{labelidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{br\_on\_null}}~l \\ &&|& \def\mathdef2704#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2704{br\_on\_non\_null}~~l{:}\href{../text/modules.html#text-labelidx}{\mathtt{labelidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{br\_on\_non\_null}}~l \\ &&|& \def\mathdef2705#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2705{br\_on\_cast}~~l{:}\href{../text/modules.html#text-labelidx}{\mathtt{labelidx}}_I~~t_1{:}\href{../text/types.html#text-reftype}{\mathtt{reftype}}~~t_2{:}\href{../text/types.html#text-reftype}{\mathtt{reftype}} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{br\_on\_cast}}~l~t_1~t_2 \\ &&|& \def\mathdef2706#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2706{br\_on\_cast\_fail}~~l{:}\href{../text/modules.html#text-labelidx}{\mathtt{labelidx}}_I~~t_1{:}\href{../text/types.html#text-reftype}{\mathtt{reftype}}~~t_2{:}\href{../text/types.html#text-reftype}{\mathtt{reftype}} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{br\_on\_cast\_fail}}~l~t_1~t_2 \\ &&|& \def\mathdef2707#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2707{return} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{return}} \\ &&|& \def\mathdef2708#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2708{call}~~x{:}\href{../text/modules.html#text-funcidx}{\mathtt{funcidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{call}}~x \\ &&|& \def\mathdef2709#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2709{call\_ref}~~x{:}\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{call\_ref}}~x \\ &&|& \def\mathdef2710#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2710{call\_indirect}~~x{:}\href{../text/modules.html#text-tableidx}{\mathtt{tableidx}}~~y,I'{:}\href{../text/modules.html#text-typeuse}{\mathtt{typeuse}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{call\_indirect}}~x~y & (\mathrel{\mbox{if}} I' = \{\href{../text/conventions.html#text-context}{\mathsf{locals}}~(\epsilon)^\ast\}) \\&&|& \def\mathdef2711#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2711{return\_call}~~x{:}\href{../text/modules.html#text-funcidx}{\mathtt{funcidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{return\_call}}~x \\ &&|& \def\mathdef2712#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2712{return\_call\_ref}~~x{:}\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{return\_call\_ref}}~x \\ &&|& \def\mathdef2713#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2713{return\_call\_indirect}~~x{:}\href{../text/modules.html#text-tableidx}{\mathtt{tableidx}}~~y,I'{:}\href{../text/modules.html#text-typeuse}{\mathtt{typeuse}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{return\_call\_indirect}}~x~y & (\mathrel{\mbox{if}} I' = \{\href{../text/conventions.html#text-context}{\mathsf{locals}}~(\epsilon)^\ast\}) \\ &&|& \def\mathdef2714#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2714{throw}~~x{:}\href{../text/modules.html#text-tagidx}{\mathtt{tagidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{throw}}~x \\ &&|& \def\mathdef2715#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2715{throw\_ref} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{throw\_ref}} \\ \end{array}\end{split}\]

Note

The side condition stating that the identifier 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-functype}{\mathtt{param}}\) declaration appearing in the type annotation.

Abbreviations

The \(\def\mathdef2716#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2716{else}\) keyword of an \(\def\mathdef2717#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2717{if}\) instruction can be omitted if the following instruction sequence is empty.

\[\begin{array}{llclll} \def\mathdef2634#1{{}}\mathdef2634{block instruction} & \def\mathdef2718#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2718{if}~~\href{../text/instructions.html#text-label}{\mathtt{label}}~~\href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}_I~~\href{../text/instructions.html#text-instr}{\mathtt{instr}}^\ast~~\def\mathdef2719#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2719{end} &\equiv& \def\mathdef2720#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2720{if}~~\href{../text/instructions.html#text-label}{\mathtt{label}}~~\href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}_I~~\href{../text/instructions.html#text-instr}{\mathtt{instr}}^\ast~~\def\mathdef2721#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2721{else}~~\def\mathdef2722#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2722{end} \end{array}\]

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

\[\begin{split}\begin{array}{llclll} \def\mathdef2634#1{{}}\mathdef2634{plain instruction} & \def\mathdef2725#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2725{call\_indirect}~~\href{../text/modules.html#text-typeuse}{\mathtt{typeuse}} &\equiv& \def\mathdef2726#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2726{call\_indirect}~~0~~\href{../text/modules.html#text-typeuse}{\mathtt{typeuse}} \\ \def\mathdef2727#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2727{return\_call\_indirect}~~\href{../text/modules.html#text-typeuse}{\mathtt{typeuse}} &\equiv& \def\mathdef2728#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2728{return\_call\_indirect}~~0~~\href{../text/modules.html#text-typeuse}{\mathtt{typeuse}} \\ \end{array}\end{split}\]

Reference Instructions

\[\begin{split}\begin{array}{llclll} \def\mathdef2634#1{{}}\mathdef2634{instruction} & \href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I &::=& \dots \\ &&|& \def\mathdef2729#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2729{ref.null}~~t{:}\href{../text/types.html#text-heaptype}{\mathtt{heaptype}} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-ref}{\mathsf{ref{.}null}}~t \\ &&|& \def\mathdef2730#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2730{ref.func}~~x{:}\href{../text/modules.html#text-funcidx}{\mathtt{funcidx}} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-ref}{\mathsf{ref{.}func}}~x \\ &&|& \def\mathdef2731#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2731{ref.is\_null} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-ref}{\mathsf{ref{.}is\_null}} \\ &&|& \def\mathdef2732#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2732{ref.as\_non\_null} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-ref}{\mathsf{ref{.}as\_non\_null}} \\ &&|& \def\mathdef2733#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2733{ref.eq} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-ref}{\mathsf{ref{.}eq}} \\ &&|& \def\mathdef2734#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2734{ref.test}~~t{:}\href{../text/types.html#text-reftype}{\mathtt{reftype}} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-ref}{\mathsf{ref{.}test}}~t \\ &&|& \def\mathdef2735#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2735{ref.cast}~~t{:}\href{../text/types.html#text-reftype}{\mathtt{reftype}} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-ref}{\mathsf{ref{.}cast}}~t \\ &&|& \def\mathdef2736#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2736{struct.new}~~x{:}\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-struct}{\mathsf{struct{.}new}}~x \\ &&|& \def\mathdef2737#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2737{struct.new\_default}~~x{:}\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-struct}{\mathsf{struct{.}new\_default}}~x \\ &&|& \def\mathdef2738#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2738{struct.get}~~x{:}\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}_I~~y{:}\href{../text/modules.html#text-fieldidx}{\mathtt{fieldidx}}_{I,x} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-struct}{\mathsf{struct{.}get}}~x~y \\ &&|& \def\mathdef2739#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2739{struct.get\_u}~~x{:}\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}_I~~y{:}\href{../text/modules.html#text-fieldidx}{\mathtt{fieldidx}}_{I,x} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-struct}{\mathsf{struct{.}get\_u}}~x~y \\ &&|& \def\mathdef2740#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2740{struct.get\_s}~~x{:}\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}_I~~y{:}\href{../text/modules.html#text-fieldidx}{\mathtt{fieldidx}}_{I,x} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-struct}{\mathsf{struct{.}get\_s}}~x~y \\ &&|& \def\mathdef2741#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2741{struct.set}~~x{:}\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}_I~~y{:}\href{../text/modules.html#text-fieldidx}{\mathtt{fieldidx}}_{I,x} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-struct}{\mathsf{struct{.}set}}~x~y \\ &&|& \def\mathdef2742#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2742{array.new}~~x{:}\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array{.}new}}~x \\ &&|& \def\mathdef2743#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2743{array.new\_default}~~x{:}\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array{.}new\_default}}~x \\ &&|& \def\mathdef2744#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2744{array.new\_fixed}~~x{:}\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}_I~~n{:}\href{../text/values.html#text-int}{\def\mathdef2663#1{{\mathtt{u}#1}}\mathdef2663{\mathtt{32}}} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array{.}new\_fixed}}~x~n \\ &&|& \def\mathdef2745#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2745{array.new\_data}~~x{:}\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}_I~~y{:}\href{../text/modules.html#text-dataidx}{\mathtt{dataidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array{.}new\_data}}~x~y \\ &&|& \def\mathdef2746#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2746{array.new\_elem}~~x{:}\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}_I~~y{:}\href{../text/modules.html#text-elemidx}{\mathtt{elemidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array{.}new\_elem}}~x~y \\ &&|& \def\mathdef2747#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2747{array.get}~~x{:}\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array{.}get}}~x \\ &&|& \def\mathdef2748#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2748{array.get\_u}~~x{:}\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array{.}get\_u}}~x \\ &&|& \def\mathdef2749#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2749{array.get\_s}~~x{:}\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array{.}get\_s}}~x \\ &&|& \def\mathdef2750#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2750{array.set}~~x{:}\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array{.}set}}~x \\ &&|& \def\mathdef2751#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2751{array.len} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array{.}len}} \\ &&|& \def\mathdef2752#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2752{array.fill}~~x{:}\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array{.}fill}}~x \\ &&|& \def\mathdef2753#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2753{array.copy}~~x{:}\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}_I~~y{:}\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array{.}copy}}~x~y \\ &&|& \def\mathdef2754#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2754{array.init\_data}~~x{:}\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}_I~~y{:}\href{../text/modules.html#text-dataidx}{\mathtt{dataidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array{.}init\_data}}~x~y \\ &&|& \def\mathdef2755#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2755{array.init\_elem}~~x{:}\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}_I~~y{:}\href{../text/modules.html#text-elemidx}{\mathtt{elemidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array{.}init\_elem}}~x~y \\ &&|& \def\mathdef2756#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2756{ref.i31} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-i31}{\mathsf{ref{.}i\scriptstyle31}} \\ &&|& \def\mathdef2757#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2757{i31.get\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-i31}{\mathsf{i{\scriptstyle31}{.}get\_u}} \\ &&|& \def\mathdef2758#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2758{i31.get\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-i31}{\mathsf{i{\scriptstyle31}{.}get\_s}} \\ &&|& \def\mathdef2759#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2759{any.convert\_extern} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-extern}{\mathsf{any{.}convert\_extern}} \\ &&|& \def\mathdef2760#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2760{extern.convert\_any} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-extern}{\mathsf{extern{.}convert\_any}} \\ \end{array}\end{split}\]

Parametric Instructions

\[\begin{split}\begin{array}{llclll} \def\mathdef2634#1{{}}\mathdef2634{instruction} & \href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I &::=& \dots \\ &&|& \def\mathdef2761#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2761{drop} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-parametric}{\mathsf{drop}} \\ &&|& \def\mathdef2762#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2762{select}~((t{:}\href{../text/types.html#text-functype}{\mathtt{result}}_I)^\ast)^? &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-parametric}{\mathsf{select}}~(t^\ast)^? \\ \end{array}\end{split}\]

Variable Instructions

\[\begin{split}\begin{array}{llclll} \def\mathdef2634#1{{}}\mathdef2634{instruction} & \href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I &::=& \dots \\ &&|& \def\mathdef2763#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2763{local.get}~~x{:}\href{../text/modules.html#text-localidx}{\mathtt{localidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-variable}{\mathsf{local{.}get}}~x \\ &&|& \def\mathdef2764#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2764{local.set}~~x{:}\href{../text/modules.html#text-localidx}{\mathtt{localidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-variable}{\mathsf{local{.}set}}~x \\ &&|& \def\mathdef2765#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2765{local.tee}~~x{:}\href{../text/modules.html#text-localidx}{\mathtt{localidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-variable}{\mathsf{local{.}tee}}~x \\ &&|& \def\mathdef2766#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2766{global.get}~~x{:}\href{../text/modules.html#text-globalidx}{\mathtt{globalidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-variable}{\mathsf{global{.}get}}~x \\ &&|& \def\mathdef2767#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2767{global.set}~~x{:}\href{../text/modules.html#text-globalidx}{\mathtt{globalidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-variable}{\mathsf{global{.}set}}~x \\ \end{array}\end{split}\]

Table Instructions

\[\begin{split}\begin{array}{llclll} \def\mathdef2634#1{{}}\mathdef2634{instruction} & \href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I &::=& \dots \\ &&|& \def\mathdef2768#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2768{table.get}~~x{:}\href{../text/modules.html#text-tableidx}{\mathtt{tableidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-table}{\mathsf{table{.}get}}~x \\ &&|& \def\mathdef2769#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2769{table.set}~~x{:}\href{../text/modules.html#text-tableidx}{\mathtt{tableidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-table}{\mathsf{table{.}set}}~x \\ &&|& \def\mathdef2770#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2770{table.size}~~x{:}\href{../text/modules.html#text-tableidx}{\mathtt{tableidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-table}{\mathsf{table{.}size}}~x \\ &&|& \def\mathdef2771#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2771{table.grow}~~x{:}\href{../text/modules.html#text-tableidx}{\mathtt{tableidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-table}{\mathsf{table{.}grow}}~x \\ &&|& \def\mathdef2772#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2772{table.fill}~~x{:}\href{../text/modules.html#text-tableidx}{\mathtt{tableidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-table}{\mathsf{table{.}fill}}~x \\ &&|& \def\mathdef2773#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2773{table.copy}~~x{:}\href{../text/modules.html#text-tableidx}{\mathtt{tableidx}}_I~~y{:}\href{../text/modules.html#text-tableidx}{\mathtt{tableidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-table}{\mathsf{table{.}copy}}~x~y \\ &&|& \def\mathdef2774#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2774{table.init}~~x{:}\href{../text/modules.html#text-tableidx}{\mathtt{tableidx}}_I~~y{:}\href{../text/modules.html#text-elemidx}{\mathtt{elemidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-table}{\mathsf{table{.}init}}~x~y \\ &&|& \def\mathdef2775#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2775{elem.drop}~~x{:}\href{../text/modules.html#text-elemidx}{\mathtt{elemidx}}_I &\Rightarrow& \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}{llcl} \def\mathdef2634#1{{}}\mathdef2634{instruction} & \def\mathdef2776#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2776{table.get} &\equiv& \def\mathdef2777#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2777{table.get}~~\def\mathdef2778#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2778{0} \\ & \def\mathdef2779#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2779{table.set} &\equiv& \def\mathdef2780#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2780{table.set}~~\def\mathdef2781#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2781{0} \\ & \def\mathdef2782#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2782{table.size} &\equiv& \def\mathdef2783#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2783{table.size}~~\def\mathdef2784#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2784{0} \\ & \def\mathdef2785#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2785{table.grow} &\equiv& \def\mathdef2786#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2786{table.grow}~~\def\mathdef2787#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2787{0} \\ & \def\mathdef2788#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2788{table.fill} &\equiv& \def\mathdef2789#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2789{table.fill}~~\def\mathdef2790#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2790{0} \\ & \def\mathdef2791#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2791{table.copy} &\equiv& \def\mathdef2792#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2792{table.copy}~~\def\mathdef2793#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2793{0}~~\def\mathdef2794#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2794{0} \\ & \def\mathdef2795#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2795{table.init}~~x{:}\href{../text/modules.html#text-elemidx}{\mathtt{elemidx}}_I &\equiv& \def\mathdef2796#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2796{table.init}~~\def\mathdef2797#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2797{0}~~x{:}\href{../text/modules.html#text-elemidx}{\mathtt{elemidx}}_I \\ \end{array}\end{split}\]

Memory Instructions

The offset and alignment immediates to memory instructions are optional. The offset defaults to \(\mathtt{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 \(\def\mathdef2798#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2798{=}\).

\[\begin{split}\begin{array}{llcllll} \def\mathdef2634#1{{}}\mathdef2634{memory argument} & \href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_N &::=& o{:}\href{../text/instructions.html#text-memarg}{\mathtt{offset}}~~a{:}\href{../text/instructions.html#text-memarg}{\mathtt{align}}_N &\Rightarrow& \{ \href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{align}}~n,~\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{offset}}~o \} & (\mathrel{\mbox{if}} a = 2^n) \\ \def\mathdef2634#1{{}}\mathdef2634{memory offset} & \href{../text/instructions.html#text-memarg}{\mathtt{offset}} &::=& \def\mathdef2799#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2799{offset{=}}o{:}\href{../text/values.html#text-int}{\def\mathdef2663#1{{\mathtt{u}#1}}\mathdef2663{\mathtt{32}}} &\Rightarrow& o \\ &&|& \epsilon &\Rightarrow& 0 \\ \def\mathdef2634#1{{}}\mathdef2634{memory alignment} & \href{../text/instructions.html#text-memarg}{\mathtt{align}}_N &::=& \def\mathdef2800#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2800{align{=}}a{:}\href{../text/values.html#text-int}{\def\mathdef2663#1{{\mathtt{u}#1}}\mathdef2663{\mathtt{32}}} &\Rightarrow& a \\ &&|& \epsilon &\Rightarrow& N \\ \def\mathdef2634#1{{}}\mathdef2634{instruction} & \href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I &::=& \dots \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\ &&|& \def\mathdef2801#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2801{i32.load}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_4 &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}~x~m \\ &&|& \def\mathdef2802#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2802{i64.load}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_8 &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}~x~m \\ &&|& \def\mathdef2803#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2803{f32.load}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_4 &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}~x~m \\ &&|& \def\mathdef2804#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2804{f64.load}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_8 &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}~x~m \\ &&|& \def\mathdef2805#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2805{v128.load}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_{16} &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}~x~m \\ &&|& \def\mathdef2806#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2806{i32.load8\_s}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_1 &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{8\_s}~x~m \\ &&|& \def\mathdef2807#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2807{i32.load8\_u}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_1 &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{8\_u}~x~m \\ &&|& \def\mathdef2808#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2808{i32.load16\_s}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_2 &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{16\_s}~x~m \\ &&|& \def\mathdef2809#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2809{i32.load16\_u}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_2 &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{16\_u}~x~m \\ &&|& \def\mathdef2810#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2810{i64.load8\_s}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_1 &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{8\_s}~x~m \\ &&|& \def\mathdef2811#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2811{i64.load8\_u}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_1 &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{8\_u}~x~m \\ &&|& \def\mathdef2812#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2812{i64.load16\_s}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_2 &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{16\_s}~x~m \\ &&|& \def\mathdef2813#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2813{i64.load16\_u}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_2 &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{16\_u}~x~m \\ &&|& \def\mathdef2814#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2814{i64.load32\_s}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_4 &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{32\_s}~x~m \\ &&|& \def\mathdef2815#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2815{i64.load32\_u}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_4 &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{32\_u}~x~m \\ &&|& \def\mathdef2816#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2816{v128.load8x8\_s}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_8 &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{8x8\_s}~x~m \\ &&|& \def\mathdef2817#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2817{v128.load8x8\_u}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_8 &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{8x8\_u}~x~m \\ &&|& \def\mathdef2818#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2818{v128.load16x4\_s}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_8 &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{16x4\_s}~x~m \\ &&|& \def\mathdef2819#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2819{v128.load16x4\_u}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_8 &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{16x4\_u}~x~m \\ &&|& \def\mathdef2820#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2820{v128.load32x2\_s}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_8 &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{32x2\_s}~x~m \\ &&|& \def\mathdef2821#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2821{v128.load32x2\_u}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_8 &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{32x2\_u}~x~m \\ &&|& \def\mathdef2822#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2822{v128.load8\_splat}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_1 &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{8\_splat}~x~m \\ &&|& \def\mathdef2823#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2823{v128.load16\_splat}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_2 &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{16\_splat}~x~m \\ &&|& \def\mathdef2824#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2824{v128.load32\_splat}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_4 &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{32\_splat}~x~m \\ &&|& \def\mathdef2825#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2825{v128.load64\_splat}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_8 &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{64\_splat}~x~m \\ &&|& \def\mathdef2826#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2826{v128.load32\_zero}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_4 &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{32\_zero}~x~m \\ &&|& \def\mathdef2827#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2827{v128.load64\_zero}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_8 &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{64\_zero}~x~m \\ &&|& \def\mathdef2828#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2828{v128.load8\_lane}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_1~~y{:}\href{../text/values.html#text-int}{\def\mathdef2661#1{{\mathtt{u}#1}}\mathdef2661{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{8\_lane}~x~m~y \\ &&|& \def\mathdef2829#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2829{v128.load16\_lane}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_2~~y{:}\href{../text/values.html#text-int}{\def\mathdef2661#1{{\mathtt{u}#1}}\mathdef2661{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{16\_lane}~x~m~y \\ &&|& \def\mathdef2830#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2830{v128.load32\_lane}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_4~~y{:}\href{../text/values.html#text-int}{\def\mathdef2661#1{{\mathtt{u}#1}}\mathdef2661{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{32\_lane}~x~m~y \\ &&|& \def\mathdef2831#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2831{v128.load64\_lane}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_8~~y{:}\href{../text/values.html#text-int}{\def\mathdef2661#1{{\mathtt{u}#1}}\mathdef2661{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{64\_lane}~x~m~y \\ &&|& \def\mathdef2832#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2832{i32.store}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_4 &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}~x~m \\ &&|& \def\mathdef2833#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2833{i64.store}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_8 &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}~x~m \\ &&|& \def\mathdef2834#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2834{f32.store}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_4 &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}~x~m \\ &&|& \def\mathdef2835#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2835{f64.store}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_8 &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}~x~m \\ &&|& \def\mathdef2836#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2836{v128.store}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_{16} &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}~x~m \\ &&|& \def\mathdef2837#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2837{i32.store8}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_1 &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}\mathsf{8}~x~m \\ &&|& \def\mathdef2838#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2838{i32.store16}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_2 &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}\mathsf{16}~x~m \\ &&|& \def\mathdef2839#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2839{i64.store8}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_1 &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}\mathsf{8}~x~m \\ &&|& \def\mathdef2840#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2840{i64.store16}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_2 &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}\mathsf{16}~x~m \\ &&|& \def\mathdef2841#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2841{i64.store32}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_4 &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}\mathsf{32}~x~m \\ &&|& \def\mathdef2842#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2842{v128.store8\_lane}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_1~~y{:}\href{../text/values.html#text-int}{\def\mathdef2661#1{{\mathtt{u}#1}}\mathdef2661{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}\mathsf{8\_lane}~x~m~y \\ &&|& \def\mathdef2843#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2843{v128.store16\_lane}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_2~~y{:}\href{../text/values.html#text-int}{\def\mathdef2661#1{{\mathtt{u}#1}}\mathdef2661{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}\mathsf{16\_lane}~x~m~y \\ &&|& \def\mathdef2844#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2844{v128.store32\_lane}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_4~~y{:}\href{../text/values.html#text-int}{\def\mathdef2661#1{{\mathtt{u}#1}}\mathdef2661{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}\mathsf{32\_lane}~x~m~y \\ &&|& \def\mathdef2845#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2845{v128.store64\_lane}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~m{:}\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}_8~~y{:}\href{../text/values.html#text-int}{\def\mathdef2661#1{{\mathtt{u}#1}}\mathdef2661{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}\mathsf{64\_lane}~x~m~y \\ \def\mathdef2846#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2846{memory.size}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{memory{.}size}}~x \\ &&|& \def\mathdef2847#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2847{memory.grow}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{memory{.}grow}}~x \\ &&|& \def\mathdef2848#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2848{memory.fill}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{memory{.}fill}}~x \\ &&|& \def\mathdef2849#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2849{memory.copy}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~y{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{memory{.}copy}}~x~y \\ &&|& \def\mathdef2850#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2850{memory.init}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}}~~y{:}\href{../text/modules.html#text-dataidx}{\mathtt{dataidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{memory{.}init}}~x~y \\ &&|& \def\mathdef2851#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2851{data.drop}~~x{:}\href{../text/modules.html#text-dataidx}{\mathtt{dataidx}}_I &\Rightarrow& \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 \(\mathtt{0}\).

\[\begin{split}\begin{array}{llclll} \def\mathdef2634#1{{}}\mathdef2634{instruction} & \href{../text/types.html#text-numtype}{\mathtt{numtype}}\def\mathdef2852#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2852{.load}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} &\equiv& \href{../text/types.html#text-numtype}{\mathtt{numtype}}\def\mathdef2853#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2853{.load}~~\def\mathdef2854#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2854{0}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} \\& \href{../text/types.html#text-vectype}{\mathtt{vectype}}\def\mathdef2855#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2855{.load}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} &\equiv& \href{../text/types.html#text-vectype}{\mathtt{vectype}}\def\mathdef2856#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2856{.load}~~\def\mathdef2857#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2857{0}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} \\& \href{../text/types.html#text-numtype}{\mathtt{numtype}}\def\mathdef2858#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2858{.load}N\def\mathdef2859#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2859{\_}\href{../syntax/instructions.html#syntax-sx}{\mathit{sx}}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} &\equiv& \href{../text/types.html#text-numtype}{\mathtt{numtype}}\def\mathdef2860#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2860{.load}N\def\mathdef2861#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2861{\_}\href{../syntax/instructions.html#syntax-sx}{\mathit{sx}}~~\def\mathdef2862#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2862{0}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} \\& \href{../text/types.html#text-vectype}{\mathtt{vectype}}\def\mathdef2863#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2863{.load}{N}\mathsf{x}M\def\mathdef2864#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2864{\_}\href{../syntax/instructions.html#syntax-sx}{\mathit{sx}}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} &\equiv& \href{../text/types.html#text-vectype}{\mathtt{vectype}}\def\mathdef2865#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2865{.load}{N}\mathsf{x}M\def\mathdef2866#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2866{\_}\href{../syntax/instructions.html#syntax-sx}{\mathit{sx}}~~\def\mathdef2867#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2867{0}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} \\& \href{../text/types.html#text-vectype}{\mathtt{vectype}}\def\mathdef2868#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2868{.load}N\def\mathdef2869#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2869{\_splat}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} &\equiv& \href{../text/types.html#text-vectype}{\mathtt{vectype}}\def\mathdef2870#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2870{.load}N\def\mathdef2871#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2871{\_splat}~~\def\mathdef2872#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2872{0}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} \\& \href{../text/types.html#text-vectype}{\mathtt{vectype}}\def\mathdef2873#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2873{.load}N\def\mathdef2874#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2874{\_zero}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} &\equiv& \href{../text/types.html#text-vectype}{\mathtt{vectype}}\def\mathdef2875#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2875{.load}N\def\mathdef2876#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2876{\_zero}~~\def\mathdef2877#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2877{0}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} \\& \href{../text/types.html#text-vectype}{\mathtt{vectype}}\def\mathdef2878#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2878{.load}N\def\mathdef2879#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2879{\_lane}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}~~\href{../text/values.html#text-int}{\def\mathdef2661#1{{\mathtt{u}#1}}\mathdef2661{\mathtt{8}}} &\equiv& \href{../text/types.html#text-vectype}{\mathtt{vectype}}\def\mathdef2880#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2880{.load}N\def\mathdef2881#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2881{\_lane}~~\def\mathdef2882#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2882{0}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}~~\href{../text/values.html#text-int}{\def\mathdef2661#1{{\mathtt{u}#1}}\mathdef2661{\mathtt{8}}} \\& \href{../text/types.html#text-numtype}{\mathtt{numtype}}\def\mathdef2883#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2883{.store}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} &\equiv& \href{../text/types.html#text-numtype}{\mathtt{numtype}}\def\mathdef2884#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2884{.store}~~\def\mathdef2885#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2885{0}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} \\& \href{../text/types.html#text-vectype}{\mathtt{vectype}}\def\mathdef2886#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2886{.store}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} &\equiv& \href{../text/types.html#text-vectype}{\mathtt{vectype}}\def\mathdef2887#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2887{.store}~~\def\mathdef2888#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2888{0}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} \\& \href{../text/types.html#text-numtype}{\mathtt{numtype}}\def\mathdef2889#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2889{.store}N~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} &\equiv& \href{../text/types.html#text-numtype}{\mathtt{numtype}}\def\mathdef2890#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2890{.store}N~~\def\mathdef2891#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2891{0}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} \\& \href{../text/types.html#text-vectype}{\mathtt{vectype}}\def\mathdef2892#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2892{.store}N\def\mathdef2893#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2893{\_lane}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}~~\href{../text/values.html#text-int}{\def\mathdef2661#1{{\mathtt{u}#1}}\mathdef2661{\mathtt{8}}} &\equiv& \href{../text/types.html#text-vectype}{\mathtt{vectype}}\def\mathdef2894#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2894{.store}N\def\mathdef2895#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2895{\_lane}~~\def\mathdef2896#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2896{0}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}~~\href{../text/values.html#text-int}{\def\mathdef2661#1{{\mathtt{u}#1}}\mathdef2661{\mathtt{8}}} \\& \def\mathdef2897#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2897{memory.size} &\equiv& \def\mathdef2898#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2898{memory.size}~~\def\mathdef2899#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2899{0} \\& \def\mathdef2900#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2900{memory.grow} &\equiv& \def\mathdef2901#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2901{memory.grow}~~\def\mathdef2902#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2902{0} \\& \def\mathdef2903#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2903{memory.fill} &\equiv& \def\mathdef2904#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2904{memory.fill}~~\def\mathdef2905#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2905{0} \\& \def\mathdef2906#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2906{memory.copy} &\equiv& \def\mathdef2907#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2907{memory.copy}~~\def\mathdef2908#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2908{0}~~\def\mathdef2909#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2909{0} \\& \def\mathdef2910#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2910{memory.init}~~x{:}\href{../text/modules.html#text-elemidx}{\mathtt{elemidx}}_I &\equiv& \def\mathdef2911#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2911{memory.init}~~\def\mathdef2912#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2912{0}~~x{:}\href{../text/modules.html#text-elemidx}{\mathtt{elemidx}}_I \end{array}\end{split}\]

Numeric Instructions

\[\begin{split}\begin{array}{llclll} \def\mathdef2634#1{{}}\mathdef2634{instruction} & \href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I &::=& \dots \\&&|& \def\mathdef2913#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2913{i32.const}~~n{:}\href{../text/values.html#text-int}{\def\mathdef2671#1{{\mathtt{i}#1}}\mathdef2671{\mathtt{32}}} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{const}}~n \\ &&|& \def\mathdef2914#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2914{i64.const}~~n{:}\href{../text/values.html#text-int}{\def\mathdef2672#1{{\mathtt{i}#1}}\mathdef2672{\mathtt{64}}} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{const}}~n \\ &&|& \def\mathdef2915#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2915{f32.const}~~z{:}\href{../text/values.html#text-float}{\def\mathdef2675#1{{\mathtt{f}#1}}\mathdef2675{\mathtt{32}}} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{const}}~z \\ &&|& \def\mathdef2916#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2916{f64.const}~~z{:}\href{../text/values.html#text-float}{\def\mathdef2676#1{{\mathtt{f}#1}}\mathdef2676{\mathtt{64}}} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{const}}~z \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef2634#1{{}}\mathdef2634{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{thisisenough} && \phantom{thisshouldbeenough} \\[-2ex] &&|& \def\mathdef2917#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2917{i32.clz} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{clz}} \\ &&|& \def\mathdef2918#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2918{i32.ctz} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ctz}} \\ &&|& \def\mathdef2919#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2919{i32.popcnt} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{popcnt}} \\ &&|& \def\mathdef2920#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2920{i32.add} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{add}} \\ &&|& \def\mathdef2921#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2921{i32.sub} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{sub}} \\ &&|& \def\mathdef2922#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2922{i32.mul} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{mul}} \\ &&|& \def\mathdef2923#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2923{i32.div\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{div}}\mathsf{\_s} \\ &&|& \def\mathdef2924#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2924{i32.div\_u} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{div}}\mathsf{\_u} \\ &&|& \def\mathdef2925#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2925{i32.rem\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{rem}}\mathsf{\_s} \\ &&|& \def\mathdef2926#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2926{i32.rem\_u} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{rem}}\mathsf{\_u} \\ &&|& \def\mathdef2927#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2927{i32.and} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{and}} \\ &&|& \def\mathdef2928#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2928{i32.or} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{or}} \\ &&|& \def\mathdef2929#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2929{i32.xor} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{xor}} \\ &&|& \def\mathdef2930#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2930{i32.shl} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{shl}} \\ &&|& \def\mathdef2931#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2931{i32.shr\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{shr}}\mathsf{\_s} \\ &&|& \def\mathdef2932#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2932{i32.shr\_u} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{shr}}\mathsf{\_u} \\ &&|& \def\mathdef2933#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2933{i32.rotl} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{rotl}} \\ &&|& \def\mathdef2934#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2934{i32.rotr} &\Rightarrow& \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}{llclll} \phantom{\def\mathdef2634#1{{}}\mathdef2634{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{thisisenough} && \phantom{thisshouldbeenough} \\[-2ex] &&|& \def\mathdef2935#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2935{i64.clz} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{clz}} \\ &&|& \def\mathdef2936#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2936{i64.ctz} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ctz}} \\ &&|& \def\mathdef2937#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2937{i64.popcnt} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{popcnt}} \\ &&|& \def\mathdef2938#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2938{i64.add} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{add}} \\ &&|& \def\mathdef2939#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2939{i64.sub} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{sub}} \\ &&|& \def\mathdef2940#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2940{i64.mul} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{mul}} \\ &&|& \def\mathdef2941#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2941{i64.div\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{div}}\mathsf{\_s} \\ &&|& \def\mathdef2942#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2942{i64.div\_u} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{div}}\mathsf{\_u} \\ &&|& \def\mathdef2943#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2943{i64.rem\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{rem}}\mathsf{\_s} \\ &&|& \def\mathdef2944#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2944{i64.rem\_u} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{rem}}\mathsf{\_u} \\ &&|& \def\mathdef2945#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2945{i64.and} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{and}} \\ &&|& \def\mathdef2946#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2946{i64.or} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{or}} \\ &&|& \def\mathdef2947#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2947{i64.xor} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{xor}} \\ &&|& \def\mathdef2948#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2948{i64.shl} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{shl}} \\ &&|& \def\mathdef2949#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2949{i64.shr\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{shr}}\mathsf{\_s} \\ &&|& \def\mathdef2950#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2950{i64.shr\_u} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{shr}}\mathsf{\_u} \\ &&|& \def\mathdef2951#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2951{i64.rotl} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{rotl}} \\ &&|& \def\mathdef2952#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2952{i64.rotr} &\Rightarrow& \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}{llclll} \phantom{\def\mathdef2634#1{{}}\mathdef2634{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{thisisenough} && \phantom{thisshouldbeenough} \\[-2ex] &&|& \def\mathdef2953#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2953{f32.abs} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{abs}} \\ &&|& \def\mathdef2954#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2954{f32.neg} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{neg}} \\ &&|& \def\mathdef2955#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2955{f32.ceil} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ceil}} \\ &&|& \def\mathdef2956#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2956{f32.floor} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{floor}} \\ &&|& \def\mathdef2957#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2957{f32.trunc} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}} \\ &&|& \def\mathdef2958#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2958{f32.nearest} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{nearest}} \\ &&|& \def\mathdef2959#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2959{f32.sqrt} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{sqrt}} \\ &&|& \def\mathdef2960#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2960{f32.add} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{add}} \\ &&|& \def\mathdef2961#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2961{f32.sub} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{sub}} \\ &&|& \def\mathdef2962#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2962{f32.mul} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{mul}} \\ &&|& \def\mathdef2963#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2963{f32.div} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{div}} \\ &&|& \def\mathdef2964#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2964{f32.min} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{min}} \\ &&|& \def\mathdef2965#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2965{f32.max} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{max}} \\ &&|& \def\mathdef2966#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2966{f32.copysign} &\Rightarrow& \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}{llclll} \phantom{\def\mathdef2634#1{{}}\mathdef2634{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{thisisenough} && \phantom{thisshouldbeenough} \\[-2ex] &&|& \def\mathdef2967#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2967{f64.abs} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{abs}} \\ &&|& \def\mathdef2968#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2968{f64.neg} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{neg}} \\ &&|& \def\mathdef2969#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2969{f64.ceil} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ceil}} \\ &&|& \def\mathdef2970#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2970{f64.floor} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{floor}} \\ &&|& \def\mathdef2971#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2971{f64.trunc} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}} \\ &&|& \def\mathdef2972#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2972{f64.nearest} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{nearest}} \\ &&|& \def\mathdef2973#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2973{f64.sqrt} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{sqrt}} \\ &&|& \def\mathdef2974#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2974{f64.add} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{add}} \\ &&|& \def\mathdef2975#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2975{f64.sub} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{sub}} \\ &&|& \def\mathdef2976#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2976{f64.mul} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{mul}} \\ &&|& \def\mathdef2977#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2977{f64.div} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{div}} \\ &&|& \def\mathdef2978#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2978{f64.min} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{min}} \\ &&|& \def\mathdef2979#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2979{f64.max} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{max}} \\ &&|& \def\mathdef2980#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2980{f64.copysign} &\Rightarrow& \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}{llclll} \phantom{\def\mathdef2634#1{{}}\mathdef2634{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{thisisenough} && \phantom{thisshouldbeenough} \\[-2ex] &&|& \def\mathdef2981#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2981{i32.eqz} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{eqz}} \\ &&|& \def\mathdef2982#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2982{i32.eq} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{eq}} \\ &&|& \def\mathdef2983#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2983{i32.ne} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ne}} \\ &&|& \def\mathdef2984#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2984{i32.lt\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{lt}}\mathsf{\_s} \\ &&|& \def\mathdef2985#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2985{i32.lt\_u} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{lt}}\mathsf{\_u} \\ &&|& \def\mathdef2986#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2986{i32.gt\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{gt}}\mathsf{\_s} \\ &&|& \def\mathdef2987#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2987{i32.gt\_u} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{gt}}\mathsf{\_u} \\ &&|& \def\mathdef2988#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2988{i32.le\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{le}}\mathsf{\_s} \\ &&|& \def\mathdef2989#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2989{i32.le\_u} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{le}}\mathsf{\_u} \\ &&|& \def\mathdef2990#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2990{i32.ge\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ge}}\mathsf{\_s} \\ &&|& \def\mathdef2991#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2991{i32.ge\_u} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ge}}\mathsf{\_u} \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef2634#1{{}}\mathdef2634{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{thisisenough} && \phantom{thisshouldbeenough} \\[-2ex] &&|& \def\mathdef2992#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2992{i64.eqz} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{eqz}} \\ &&|& \def\mathdef2993#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2993{i64.eq} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{eq}} \\ &&|& \def\mathdef2994#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2994{i64.ne} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ne}} \\ &&|& \def\mathdef2995#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2995{i64.lt\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{lt}}\mathsf{\_s} \\ &&|& \def\mathdef2996#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2996{i64.lt\_u} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{lt}}\mathsf{\_u} \\ &&|& \def\mathdef2997#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2997{i64.gt\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{gt}}\mathsf{\_s} \\ &&|& \def\mathdef2998#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2998{i64.gt\_u} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{gt}}\mathsf{\_u} \\ &&|& \def\mathdef2999#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef2999{i64.le\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{le}}\mathsf{\_s} \\ &&|& \def\mathdef3000#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3000{i64.le\_u} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{le}}\mathsf{\_u} \\ &&|& \def\mathdef3001#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3001{i64.ge\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ge}}\mathsf{\_s} \\ &&|& \def\mathdef3002#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3002{i64.ge\_u} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ge}}\mathsf{\_u} \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef2634#1{{}}\mathdef2634{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{thisisenough} && \phantom{thisshouldbeenough} \\[-2ex] &&|& \def\mathdef3003#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3003{f32.eq} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{eq}} \\ &&|& \def\mathdef3004#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3004{f32.ne} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ne}} \\ &&|& \def\mathdef3005#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3005{f32.lt} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{lt}} \\ &&|& \def\mathdef3006#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3006{f32.gt} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{gt}} \\ &&|& \def\mathdef3007#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3007{f32.le} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{le}} \\ &&|& \def\mathdef3008#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3008{f32.ge} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ge}} \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef2634#1{{}}\mathdef2634{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{thisisenough} && \phantom{thisshouldbeenough} \\[-2ex] &&|& \def\mathdef3009#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3009{f64.eq} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{eq}} \\ &&|& \def\mathdef3010#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3010{f64.ne} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ne}} \\ &&|& \def\mathdef3011#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3011{f64.lt} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{lt}} \\ &&|& \def\mathdef3012#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3012{f64.gt} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{gt}} \\ &&|& \def\mathdef3013#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3013{f64.le} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{le}} \\ &&|& \def\mathdef3014#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3014{f64.ge} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ge}} \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef2634#1{{}}\mathdef2634{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{thisisenough} && \phantom{thisshouldbeenough} \\[-2ex] &&|& \def\mathdef3015#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3015{i32.wrap\_i64} &\Rightarrow& \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}} \\ &&|& \def\mathdef3016#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3016{i32.trunc\_f32\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_}\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}\mathsf{\_s} \\ &&|& \def\mathdef3017#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3017{i32.trunc\_f32\_u} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_}\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}\mathsf{\_u} \\ &&|& \def\mathdef3018#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3018{i32.trunc\_f64\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_}\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}\mathsf{\_s} \\ &&|& \def\mathdef3019#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3019{i32.trunc\_f64\_u} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_}\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}\mathsf{\_u} \\ &&|& \def\mathdef3020#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3020{i32.trunc\_sat\_f32\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_sat\_}\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}\mathsf{\_s} \\ &&|& \def\mathdef3021#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3021{i32.trunc\_sat\_f32\_u} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_sat\_}\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}\mathsf{\_u} \\ &&|& \def\mathdef3022#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3022{i32.trunc\_sat\_f64\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_sat\_}\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}\mathsf{\_s} \\ &&|& \def\mathdef3023#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3023{i32.trunc\_sat\_f64\_u} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_sat\_}\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}\mathsf{\_u} \\ &&|& \def\mathdef3024#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3024{i64.extend\_i32\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{extend}}\mathsf{\_}\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}\mathsf{\_s} \\ &&|& \def\mathdef3025#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3025{i64.extend\_i32\_u} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{extend}}\mathsf{\_}\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}\mathsf{\_u} \\ &&|& \def\mathdef3026#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3026{i64.trunc\_f32\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_}\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}\mathsf{\_s} \\ &&|& \def\mathdef3027#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3027{i64.trunc\_f32\_u} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_}\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}\mathsf{\_u} \\ &&|& \def\mathdef3028#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3028{i64.trunc\_f64\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_}\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}\mathsf{\_s} \\ &&|& \def\mathdef3029#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3029{i64.trunc\_f64\_u} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_}\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}\mathsf{\_u} \\ &&|& \def\mathdef3030#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3030{i64.trunc\_sat\_f32\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_sat\_}\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}\mathsf{\_s} \\ &&|& \def\mathdef3031#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3031{i64.trunc\_sat\_f32\_u} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_sat\_}\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}\mathsf{\_u} \\ &&|& \def\mathdef3032#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3032{i64.trunc\_sat\_f64\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_sat\_}\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}\mathsf{\_s} \\ &&|& \def\mathdef3033#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3033{i64.trunc\_sat\_f64\_u} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_sat\_}\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}\mathsf{\_u} \\ &&|& \def\mathdef3034#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3034{f32.convert\_i32\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}\mathsf{\_}\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}\mathsf{\_s} \\ &&|& \def\mathdef3035#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3035{f32.convert\_i32\_u} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}\mathsf{\_}\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}\mathsf{\_u} \\ &&|& \def\mathdef3036#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3036{f32.convert\_i64\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}\mathsf{\_}\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}\mathsf{\_s} \\ &&|& \def\mathdef3037#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3037{f32.convert\_i64\_u} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}\mathsf{\_}\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}\mathsf{\_u} \\ &&|& \def\mathdef3038#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3038{f32.demote\_f64} &\Rightarrow& \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}} \\ &&|& \def\mathdef3039#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3039{f64.convert\_i32\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}\mathsf{\_}\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}\mathsf{\_s} \\ &&|& \def\mathdef3040#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3040{f64.convert\_i32\_u} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}\mathsf{\_}\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}\mathsf{\_u} \\ &&|& \def\mathdef3041#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3041{f64.convert\_i64\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}\mathsf{\_}\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}\mathsf{\_s} \\ &&|& \def\mathdef3042#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3042{f64.convert\_i64\_u} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}\mathsf{\_}\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}\mathsf{\_u} \\ &&|& \def\mathdef3043#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3043{f64.promote\_f32} &\Rightarrow& \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}} \\ &&|& \def\mathdef3044#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3044{i32.reinterpret\_f32} &\Rightarrow& \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}} \\ &&|& \def\mathdef3045#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3045{i64.reinterpret\_f64} &\Rightarrow& \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}} \\ &&|& \def\mathdef3046#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3046{f32.reinterpret\_i32} &\Rightarrow& \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}} \\ &&|& \def\mathdef3047#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3047{f64.reinterpret\_i64} &\Rightarrow& \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}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef2634#1{{}}\mathdef2634{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{thisisenough} && \phantom{thisshouldbeenough} \\[-2ex] &&|& \def\mathdef3048#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3048{i32.extend8\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{extend}}\mathsf{8\_s} \\ &&|& \def\mathdef3049#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3049{i32.extend16\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{extend}}\mathsf{16\_s} \\ &&|& \def\mathdef3050#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3050{i64.extend8\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{extend}}\mathsf{8\_s} \\ &&|& \def\mathdef3051#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3051{i64.extend16\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{extend}}\mathsf{16\_s} \\ &&|& \def\mathdef3052#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3052{i64.extend32\_s} &\Rightarrow& \href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{extend}}\mathsf{32\_s} \\ \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}{llclll} \phantom{\def\mathdef2634#1{{}}\mathdef2634{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3053#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3053{v128.const}~~\def\mathdef3054#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3054{i8x16}~~(n{:}\href{../text/values.html#text-int}{\def\mathdef2669#1{{\mathtt{i}#1}}\mathdef2669{\mathtt{8}}})^{16} &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{const}}~\href{../exec/numerics.html#aux-bytes}{\mathrm{bytes}}_{i128}^{-1}(\href{../exec/numerics.html#aux-bytes}{\mathrm{bytes}}_{i8}(n)^{16}) \\ &&|& \def\mathdef3055#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3055{v128.const}~~\def\mathdef3056#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3056{i16x8}~~(n{:}\href{../text/values.html#text-int}{\def\mathdef2670#1{{\mathtt{i}#1}}\mathdef2670{\mathtt{16}}})^{8} &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{const}}~\href{../exec/numerics.html#aux-bytes}{\mathrm{bytes}}_{i128}^{-1}(\href{../exec/numerics.html#aux-bytes}{\mathrm{bytes}}_{i16}(n)^8) \\ &&|& \def\mathdef3057#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3057{v128.const}~~\def\mathdef3058#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3058{i32x4}~~(n{:}\href{../text/values.html#text-int}{\def\mathdef2671#1{{\mathtt{i}#1}}\mathdef2671{\mathtt{32}}})^{4} &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{const}}~\href{../exec/numerics.html#aux-bytes}{\mathrm{bytes}}_{i128}^{-1}(\href{../exec/numerics.html#aux-bytes}{\mathrm{bytes}}_{i32}(n)^4) \\ &&|& \def\mathdef3059#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3059{v128.const}~~\def\mathdef3060#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3060{i64x2}~~(n{:}\href{../text/values.html#text-int}{\def\mathdef2672#1{{\mathtt{i}#1}}\mathdef2672{\mathtt{64}}})^{2} &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{const}}~\href{../exec/numerics.html#aux-bytes}{\mathrm{bytes}}_{i128}^{-1}(\href{../exec/numerics.html#aux-bytes}{\mathrm{bytes}}_{i64}(n)^2) \\ &&|& \def\mathdef3061#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3061{v128.const}~~\def\mathdef3062#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3062{f32x4}~~(z{:}\href{../text/values.html#text-float}{\def\mathdef2675#1{{\mathtt{f}#1}}\mathdef2675{\mathtt{32}}})^{4} &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{const}}~\href{../exec/numerics.html#aux-bytes}{\mathrm{bytes}}_{i128}^{-1}(\href{../exec/numerics.html#aux-bytes}{\mathrm{bytes}}_{f32}(z)^4) \\ &&|& \def\mathdef3063#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3063{v128.const}~~\def\mathdef3064#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3064{f64x2}~~(z{:}\href{../text/values.html#text-float}{\def\mathdef2676#1{{\mathtt{f}#1}}\mathdef2676{\mathtt{64}}})^{2} &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{const}}~\href{../exec/numerics.html#aux-bytes}{\mathrm{bytes}}_{i128}^{-1}(\href{../exec/numerics.html#aux-bytes}{\mathrm{bytes}}_{f64}(z)^2) \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef2634#1{{}}\mathdef2634{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3065#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3065{i8x16.shuffle}~~(laneidx{:}\href{../text/values.html#text-int}{\def\mathdef2661#1{{\mathtt{u}#1}}\mathdef2661{\mathtt{8}}})^{16} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shuffle}}~laneidx^{16} \\ &&|& \def\mathdef3066#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3066{i8x16.swizzle} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{swizzle}} \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef2634#1{{}}\mathdef2634{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3067#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3067{i8x16.splat} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{splat}}\\ &&|& \def\mathdef3068#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3068{i16x8.splat} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{splat}}\\ &&|& \def\mathdef3069#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3069{i32x4.splat} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{splat}}\\ &&|& \def\mathdef3070#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3070{i64x2.splat} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{splat}}\\ &&|& \def\mathdef3071#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3071{f32x4.splat} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{splat}}\\ &&|& \def\mathdef3072#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3072{f64x2.splat} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{splat}}\\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef2634#1{{}}\mathdef2634{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3073#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3073{i8x16.extract\_lane\_s}~~laneidx{:}\href{../text/values.html#text-int}{\def\mathdef2661#1{{\mathtt{u}#1}}\mathdef2661{\mathtt{8}}} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extract\_lane}}\mathsf{\_s}~laneidx \\ &&|& \def\mathdef3074#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3074{i8x16.extract\_lane\_u}~~laneidx{:}\href{../text/values.html#text-int}{\def\mathdef2661#1{{\mathtt{u}#1}}\mathdef2661{\mathtt{8}}} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extract\_lane}}\mathsf{\_u}~laneidx \\ &&|& \def\mathdef3075#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3075{i8x16.replace\_lane}~~laneidx{:}\href{../text/values.html#text-int}{\def\mathdef2661#1{{\mathtt{u}#1}}\mathdef2661{\mathtt{8}}} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{replace\_lane}}~laneidx \\ &&|& \def\mathdef3076#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3076{i16x8.extract\_lane\_s}~~laneidx{:}\href{../text/values.html#text-int}{\def\mathdef2661#1{{\mathtt{u}#1}}\mathdef2661{\mathtt{8}}} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extract\_lane}}\mathsf{\_s}~laneidx \\ &&|& \def\mathdef3077#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3077{i16x8.extract\_lane\_u}~~laneidx{:}\href{../text/values.html#text-int}{\def\mathdef2661#1{{\mathtt{u}#1}}\mathdef2661{\mathtt{8}}} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extract\_lane}}\mathsf{\_u}~laneidx \\ &&|& \def\mathdef3078#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3078{i16x8.replace\_lane}~~laneidx{:}\href{../text/values.html#text-int}{\def\mathdef2661#1{{\mathtt{u}#1}}\mathdef2661{\mathtt{8}}} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{replace\_lane}}~laneidx \\ &&|& \def\mathdef3079#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3079{i32x4.extract\_lane}~~laneidx{:}\href{../text/values.html#text-int}{\def\mathdef2661#1{{\mathtt{u}#1}}\mathdef2661{\mathtt{8}}} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extract\_lane}}~laneidx \\ &&|& \def\mathdef3080#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3080{i32x4.replace\_lane}~~laneidx{:}\href{../text/values.html#text-int}{\def\mathdef2661#1{{\mathtt{u}#1}}\mathdef2661{\mathtt{8}}} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{replace\_lane}}~laneidx \\ &&|& \def\mathdef3081#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3081{i64x2.extract\_lane}~~laneidx{:}\href{../text/values.html#text-int}{\def\mathdef2661#1{{\mathtt{u}#1}}\mathdef2661{\mathtt{8}}} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extract\_lane}}~laneidx \\ &&|& \def\mathdef3082#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3082{i64x2.replace\_lane}~~laneidx{:}\href{../text/values.html#text-int}{\def\mathdef2661#1{{\mathtt{u}#1}}\mathdef2661{\mathtt{8}}} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{replace\_lane}}~laneidx \\ &&|& \def\mathdef3083#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3083{f32x4.extract\_lane}~~laneidx{:}\href{../text/values.html#text-int}{\def\mathdef2661#1{{\mathtt{u}#1}}\mathdef2661{\mathtt{8}}} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extract\_lane}}~laneidx \\ &&|& \def\mathdef3084#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3084{f32x4.replace\_lane}~~laneidx{:}\href{../text/values.html#text-int}{\def\mathdef2661#1{{\mathtt{u}#1}}\mathdef2661{\mathtt{8}}} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{replace\_lane}}~laneidx \\ &&|& \def\mathdef3085#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3085{f64x2.extract\_lane}~~laneidx{:}\href{../text/values.html#text-int}{\def\mathdef2661#1{{\mathtt{u}#1}}\mathdef2661{\mathtt{8}}} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extract\_lane}}~laneidx \\ &&|& \def\mathdef3086#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3086{f64x2.replace\_lane}~~laneidx{:}\href{../text/values.html#text-int}{\def\mathdef2661#1{{\mathtt{u}#1}}\mathdef2661{\mathtt{8}}} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{replace\_lane}}~laneidx \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef2634#1{{}}\mathdef2634{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3087#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3087{i8x16.eq} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{eq}}\\ &&|& \def\mathdef3088#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3088{i8x16.ne} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ne}}\\ &&|& \def\mathdef3089#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3089{i8x16.lt\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{lt}}\mathsf{\_s}\\ &&|& \def\mathdef3090#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3090{i8x16.lt\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{lt}}\mathsf{\_u}\\ &&|& \def\mathdef3091#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3091{i8x16.gt\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{gt}}\mathsf{\_s}\\ &&|& \def\mathdef3092#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3092{i8x16.gt\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{gt}}\mathsf{\_u}\\ &&|& \def\mathdef3093#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3093{i8x16.le\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{le}}\mathsf{\_s}\\ &&|& \def\mathdef3094#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3094{i8x16.le\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{le}}\mathsf{\_u}\\ &&|& \def\mathdef3095#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3095{i8x16.ge\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ge}}\mathsf{\_s}\\ &&|& \def\mathdef3096#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3096{i8x16.ge\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ge}}\mathsf{\_u}\\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef2634#1{{}}\mathdef2634{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3097#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3097{i16x8.eq} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{eq}}\\ &&|& \def\mathdef3098#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3098{i16x8.ne} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ne}}\\ &&|& \def\mathdef3099#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3099{i16x8.lt\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{lt}}\mathsf{\_s}\\ &&|& \def\mathdef3100#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3100{i16x8.lt\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{lt}}\mathsf{\_u}\\ &&|& \def\mathdef3101#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3101{i16x8.gt\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{gt}}\mathsf{\_s}\\ &&|& \def\mathdef3102#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3102{i16x8.gt\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{gt}}\mathsf{\_u}\\ &&|& \def\mathdef3103#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3103{i16x8.le\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{le}}\mathsf{\_s}\\ &&|& \def\mathdef3104#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3104{i16x8.le\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{le}}\mathsf{\_u}\\ &&|& \def\mathdef3105#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3105{i16x8.ge\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ge}}\mathsf{\_s}\\ &&|& \def\mathdef3106#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3106{i16x8.ge\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ge}}\mathsf{\_u}\\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef2634#1{{}}\mathdef2634{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3107#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3107{i32x4.eq} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{eq}}\\ &&|& \def\mathdef3108#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3108{i32x4.ne} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ne}}\\ &&|& \def\mathdef3109#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3109{i32x4.lt\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{lt}}\mathsf{\_s}\\ &&|& \def\mathdef3110#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3110{i32x4.lt\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{lt}}\mathsf{\_u}\\ &&|& \def\mathdef3111#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3111{i32x4.gt\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{gt}}\mathsf{\_s}\\ &&|& \def\mathdef3112#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3112{i32x4.gt\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{gt}}\mathsf{\_u}\\ &&|& \def\mathdef3113#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3113{i32x4.le\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{le}}\mathsf{\_s}\\ &&|& \def\mathdef3114#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3114{i32x4.le\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{le}}\mathsf{\_u}\\ &&|& \def\mathdef3115#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3115{i32x4.ge\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ge}}\mathsf{\_s}\\ &&|& \def\mathdef3116#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3116{i32x4.ge\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ge}}\mathsf{\_u}\\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef2634#1{{}}\mathdef2634{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3117#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3117{i64x2.eq} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{eq}}\\ &&|& \def\mathdef3118#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3118{i64x2.ne} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ne}}\\ &&|& \def\mathdef3119#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3119{i64x2.lt\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{lt}}\mathsf{\_s}\\ &&|& \def\mathdef3120#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3120{i64x2.gt\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{gt}}\mathsf{\_s}\\ &&|& \def\mathdef3121#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3121{i64x2.le\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{le}}\mathsf{\_s}\\ &&|& \def\mathdef3122#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3122{i64x2.ge\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ge}}\mathsf{\_s}\\ &&|& \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef2634#1{{}}\mathdef2634{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3123#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3123{f32x4.eq} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{eq}}\\ &&|& \def\mathdef3124#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3124{f32x4.ne} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ne}}\\ &&|& \def\mathdef3125#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3125{f32x4.lt} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{lt}}\\ &&|& \def\mathdef3126#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3126{f32x4.gt} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{gt}}\\ &&|& \def\mathdef3127#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3127{f32x4.le} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{le}}\\ &&|& \def\mathdef3128#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3128{f32x4.ge} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ge}}\\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef2634#1{{}}\mathdef2634{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3129#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3129{f64x2.eq} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{eq}}\\ &&|& \def\mathdef3130#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3130{f64x2.ne} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ne}}\\ &&|& \def\mathdef3131#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3131{f64x2.lt} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{lt}}\\ &&|& \def\mathdef3132#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3132{f64x2.gt} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{gt}}\\ &&|& \def\mathdef3133#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3133{f64x2.le} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{le}}\\ &&|& \def\mathdef3134#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3134{f64x2.ge} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ge}}\\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef2634#1{{}}\mathdef2634{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3135#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3135{v128.not} &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{not}}\\ &&|& \def\mathdef3136#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3136{v128.and} &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{and}}\\ &&|& \def\mathdef3137#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3137{v128.andnot} &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{andnot}}\\ &&|& \def\mathdef3138#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3138{v128.or} &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{or}}\\ &&|& \def\mathdef3139#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3139{v128.xor} &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{xor}}\\ &&|& \def\mathdef3140#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3140{v128.bitselect} &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{bitselect}}\\ &&|& \def\mathdef3141#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3141{v128.any\_true} &\Rightarrow& \href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{any\_true}} \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef2634#1{{}}\mathdef2634{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3142#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3142{i8x16.abs} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{abs}}\\ &&|& \def\mathdef3143#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3143{i8x16.neg} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{neg}}\\ &&|& \def\mathdef3144#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3144{i8x16.all\_true} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{all\_true}}\\ &&|& \def\mathdef3145#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3145{i8x16.bitmask} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{bitmask}}\\ &&|& \def\mathdef3146#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3146{i8x16.narrow\_i16x8\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{narrow}}\mathsf{\_i16x8\_s}\\ &&|& \def\mathdef3147#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3147{i8x16.narrow\_i16x8\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{narrow}}\mathsf{\_i16x8\_u}\\ &&|& \def\mathdef3148#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3148{i8x16.shl} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shl}}\\ &&|& \def\mathdef3149#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3149{i8x16.shr\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shr}}\mathsf{\_s}\\ &&|& \def\mathdef3150#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3150{i8x16.shr\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shr}}\mathsf{\_u}\\ &&|& \def\mathdef3151#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3151{i8x16.add} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add}}\\ &&|& \def\mathdef3152#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3152{i8x16.add\_sat\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add\_sat}}\mathsf{\_s}\\ &&|& \def\mathdef3153#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3153{i8x16.add\_sat\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add\_sat}}\mathsf{\_u}\\ &&|& \def\mathdef3154#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3154{i8x16.sub} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub}}\\ &&|& \def\mathdef3155#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3155{i8x16.sub\_sat\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub\_sat}}\mathsf{\_s}\\ &&|& \def\mathdef3156#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3156{i8x16.sub\_sat\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub\_sat}}\mathsf{\_u}\\ &&|& \def\mathdef3157#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3157{i8x16.min\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{min}}\mathsf{\_s}\\ &&|& \def\mathdef3158#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3158{i8x16.min\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{min}}\mathsf{\_u}\\ &&|& \def\mathdef3159#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3159{i8x16.max\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{max}}\mathsf{\_s}\\ &&|& \def\mathdef3160#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3160{i8x16.max\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{max}}\mathsf{\_u}\\ &&|& \def\mathdef3161#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3161{i8x16.avgr\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{avgr}}\mathsf{\_u}\\ &&|& \def\mathdef3162#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3162{i8x16.popcnt} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle8}x\scriptstyle16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{popcnt}}\\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef2634#1{{}}\mathdef2634{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3163#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3163{i16x8.abs} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{abs}}\\ &&|& \def\mathdef3164#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3164{i16x8.neg} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{neg}}\\ &&|& \def\mathdef3165#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3165{i16x8.all\_true} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{all\_true}}\\ &&|& \def\mathdef3166#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3166{i16x8.bitmask} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{bitmask}}\\ &&|& \def\mathdef3167#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3167{i16x8.narrow\_i32x4\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{narrow}}\mathsf{\_i32x4\_s}\\ &&|& \def\mathdef3168#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3168{i16x8.narrow\_i32x4\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{narrow}}\mathsf{\_i32x4\_u}\\ &&|& \def\mathdef3169#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3169{i16x8.extend\_low\_i8x16\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}\mathsf{\_low\_i8x16\_s}\\ &&|& \def\mathdef3170#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3170{i16x8.extend\_high\_i8x16\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}\mathsf{\_high\_i8x16\_s}\\ &&|& \def\mathdef3171#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3171{i16x8.extend\_low\_i8x16\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}\mathsf{\_low\_i8x16\_u}\\ &&|& \def\mathdef3172#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3172{i16x8.extend\_high\_i8x16\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}\mathsf{\_high\_i8x16\_u}\\ &&|& \def\mathdef3173#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3173{i16x8.shl} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shl}}\\ &&|& \def\mathdef3174#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3174{i16x8.shr\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shr}}\mathsf{\_s}\\ &&|& \def\mathdef3175#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3175{i16x8.shr\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shr}}\mathsf{\_u}\\ &&|& \def\mathdef3176#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3176{i16x8.add} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add}}\\ &&|& \def\mathdef3177#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3177{i16x8.add\_sat\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add\_sat}}\mathsf{\_s}\\ &&|& \def\mathdef3178#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3178{i16x8.add\_sat\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add\_sat}}\mathsf{\_u}\\ &&|& \def\mathdef3179#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3179{i16x8.sub} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub}}\\ &&|& \def\mathdef3180#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3180{i16x8.sub\_sat\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub\_sat}}\mathsf{\_s}\\ &&|& \def\mathdef3181#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3181{i16x8.sub\_sat\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub\_sat}}\mathsf{\_u}\\ &&|& \def\mathdef3182#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3182{i16x8.mul} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{mul}}\\ &&|& \def\mathdef3183#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3183{i16x8.min\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{min}}\mathsf{\_s}\\ &&|& \def\mathdef3184#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3184{i16x8.min\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{min}}\mathsf{\_u}\\ &&|& \def\mathdef3185#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3185{i16x8.max\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{max}}\mathsf{\_s}\\ &&|& \def\mathdef3186#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3186{i16x8.max\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{max}}\mathsf{\_u}\\ &&|& \def\mathdef3187#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3187{i16x8.avgr\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{avgr}}\mathsf{\_u}\\ &&|& \def\mathdef3188#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3188{i16x8.q15mulr\_sat\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{q{\scriptstyle15}mulr\_sat}}\mathsf{\_s}\\ &&|& \def\mathdef3189#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3189{i16x8.extmul\_low\_i8x16\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}\mathsf{\_low\_i8x16\_s}\\ &&|& \def\mathdef3190#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3190{i16x8.extmul\_high\_i8x16\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}\mathsf{\_high\_i8x16\_s}\\ &&|& \def\mathdef3191#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3191{i16x8.extmul\_low\_i8x16\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}\mathsf{\_low\_i8x16\_u}\\ &&|& \def\mathdef3192#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3192{i16x8.extmul\_high\_i8x16\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}\mathsf{\_high\_i8x16\_u}\\ &&|& \def\mathdef3193#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3193{i16x8.extadd\_pairwise\_i8x16\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extadd\_pairwise}}\mathsf{\_i8x16\_s}\\ &&|& \def\mathdef3194#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3194{i16x8.extadd\_pairwise\_i8x16\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle16}x\scriptstyle8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extadd\_pairwise}}\mathsf{\_i8x16\_u}\\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef2634#1{{}}\mathdef2634{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3195#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3195{i32x4.abs} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{abs}}\\ &&|& \def\mathdef3196#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3196{i32x4.neg} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{neg}}\\ &&|& \def\mathdef3197#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3197{i32x4.all\_true} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{all\_true}}\\ &&|& \def\mathdef3198#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3198{i32x4.bitmask} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{bitmask}}\\ &&|& \def\mathdef3199#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3199{i32x4.extadd\_pairwise\_i16x8\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extadd\_pairwise}}\mathsf{\_i16x8\_s}\\ &&|& \def\mathdef3200#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3200{i32x4.extadd\_pairwise\_i16x8\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extadd\_pairwise}}\mathsf{\_i16x8\_u}\\ &&|& \def\mathdef3201#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3201{i32x4.extend\_low\_i16x8\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}\mathsf{\_low\_i16x8\_s}\\ &&|& \def\mathdef3202#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3202{i32x4.extend\_high\_i16x8\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}\mathsf{\_high\_i16x8\_s}\\ &&|& \def\mathdef3203#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3203{i32x4.extend\_low\_i16x8\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}\mathsf{\_low\_i16x8\_u}\\ &&|& \def\mathdef3204#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3204{i32x4.extend\_high\_i16x8\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}\mathsf{\_high\_i16x8\_u}\\ &&|& \def\mathdef3205#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3205{i32x4.shl} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shl}}\\ &&|& \def\mathdef3206#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3206{i32x4.shr\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shr}}\mathsf{\_s}\\ &&|& \def\mathdef3207#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3207{i32x4.shr\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shr}}\mathsf{\_u}\\ &&|& \def\mathdef3208#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3208{i32x4.add} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add}}\\ &&|& \def\mathdef3209#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3209{i32x4.sub} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub}}\\ &&|& \def\mathdef3210#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3210{i32x4.mul} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{mul}}\\ &&|& \def\mathdef3211#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3211{i32x4.min\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{min}}\mathsf{\_s}\\ &&|& \def\mathdef3212#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3212{i32x4.min\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{min}}\mathsf{\_u}\\ &&|& \def\mathdef3213#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3213{i32x4.max\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{max}}\mathsf{\_s}\\ &&|& \def\mathdef3214#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3214{i32x4.max\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{max}}\mathsf{\_u}\\ &&|& \def\mathdef3215#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3215{i32x4.dot\_i16x8\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{dot}}\mathsf{\_i16x8\_s}\\ &&|& \def\mathdef3216#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3216{i32x4.extmul\_low\_i16x8\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}\mathsf{\_low\_i16x8\_s}\\ &&|& \def\mathdef3217#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3217{i32x4.extmul\_high\_i16x8\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}\mathsf{\_high\_i16x8\_s}\\ &&|& \def\mathdef3218#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3218{i32x4.extmul\_low\_i16x8\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}\mathsf{\_low\_i16x8\_u}\\ &&|& \def\mathdef3219#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3219{i32x4.extmul\_high\_i16x8\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}\mathsf{\_high\_i16x8\_u}\\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef2634#1{{}}\mathdef2634{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3220#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3220{i64x2.abs} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{abs}}\\ &&|& \def\mathdef3221#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3221{i64x2.neg} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{neg}}\\ &&|& \def\mathdef3222#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3222{i64x2.all\_true} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{all\_true}}\\ &&|& \def\mathdef3223#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3223{i64x2.bitmask} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{bitmask}}\\ &&|& \def\mathdef3224#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3224{i64x2.extend\_low\_i32x4\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}\mathsf{\_low\_i32x4\_s} \\ &&|& \def\mathdef3225#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3225{i64x2.extend\_high\_i32x4\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}\mathsf{\_high\_i32x4\_s} \\ &&|& \def\mathdef3226#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3226{i64x2.extend\_low\_i32x4\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}\mathsf{\_low\_i32x4\_u} \\ &&|& \def\mathdef3227#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3227{i64x2.extend\_high\_i32x4\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}\mathsf{\_high\_i32x4\_u} \\ &&|& \def\mathdef3228#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3228{i64x2.shl} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shl}}\\ &&|& \def\mathdef3229#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3229{i64x2.shr\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shr}}\mathsf{\_s}\\ &&|& \def\mathdef3230#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3230{i64x2.shr\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shr}}\mathsf{\_u}\\ &&|& \def\mathdef3231#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3231{i64x2.add} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add}}\\ &&|& \def\mathdef3232#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3232{i64x2.sub} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub}}\\ &&|& \def\mathdef3233#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3233{i64x2.mul} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{mul}}\\ &&|& \def\mathdef3234#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3234{i64x2.extmul\_low\_i32x4\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}\mathsf{\_low\_i32x4\_s}\\ &&|& \def\mathdef3235#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3235{i64x2.extmul\_high\_i32x4\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}\mathsf{\_high\_i32x4\_s}\\ &&|& \def\mathdef3236#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3236{i64x2.extmul\_low\_i32x4\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}\mathsf{\_low\_i32x4\_u}\\ &&|& \def\mathdef3237#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3237{i64x2.extmul\_high\_i32x4\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}\mathsf{\_high\_i32x4\_u}\\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef2634#1{{}}\mathdef2634{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3238#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3238{f32x4.abs} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{abs}}\\ &&|& \def\mathdef3239#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3239{f32x4.neg} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{neg}}\\ &&|& \def\mathdef3240#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3240{f32x4.sqrt} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sqrt}}\\ &&|& \def\mathdef3241#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3241{f32x4.ceil} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ceil}}\\ &&|& \def\mathdef3242#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3242{f32x4.floor} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{floor}}\\ &&|& \def\mathdef3243#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3243{f32x4.trunc} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{trunc}}\\ &&|& \def\mathdef3244#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3244{f32x4.nearest} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{nearest}}\\ &&|& \def\mathdef3245#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3245{f32x4.add} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add}}\\ &&|& \def\mathdef3246#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3246{f32x4.sub} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub}}\\ &&|& \def\mathdef3247#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3247{f32x4.mul} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{mul}}\\ &&|& \def\mathdef3248#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3248{f32x4.div} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{div}}\\ &&|& \def\mathdef3249#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3249{f32x4.min} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{min}}\\ &&|& \def\mathdef3250#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3250{f32x4.max} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{max}}\\ &&|& \def\mathdef3251#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3251{f32x4.pmin} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{pmin}}\\ &&|& \def\mathdef3252#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3252{f32x4.pmax} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{pmax}}\\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef2634#1{{}}\mathdef2634{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3253#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3253{f64x2.abs} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{abs}}\\ &&|& \def\mathdef3254#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3254{f64x2.neg} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{neg}}\\ &&|& \def\mathdef3255#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3255{f64x2.sqrt} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sqrt}}\\ &&|& \def\mathdef3256#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3256{f64x2.ceil} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ceil}}\\ &&|& \def\mathdef3257#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3257{f64x2.floor} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{floor}}\\ &&|& \def\mathdef3258#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3258{f64x2.trunc} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{trunc}}\\ &&|& \def\mathdef3259#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3259{f64x2.nearest} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{nearest}}\\ &&|& \def\mathdef3260#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3260{f64x2.add} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add}}\\ &&|& \def\mathdef3261#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3261{f64x2.sub} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub}}\\ &&|& \def\mathdef3262#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3262{f64x2.mul} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{mul}}\\ &&|& \def\mathdef3263#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3263{f64x2.div} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{div}}\\ &&|& \def\mathdef3264#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3264{f64x2.min} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{min}}\\ &&|& \def\mathdef3265#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3265{f64x2.max} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{max}}\\ &&|& \def\mathdef3266#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3266{f64x2.pmin} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{pmin}}\\ &&|& \def\mathdef3267#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3267{f64x2.pmax} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{pmax}}\\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef2634#1{{}}\mathdef2634{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3268#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3268{i32x4.trunc\_sat\_f32x4\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{trunc\_sat}}\mathsf{\_f32x4\_s}\\ &&|& \def\mathdef3269#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3269{i32x4.trunc\_sat\_f32x4\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{trunc\_sat}}\mathsf{\_f32x4\_u}\\ &&|& \def\mathdef3270#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3270{i32x4.trunc\_sat\_f64x2\_s\_zero} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{trunc\_sat}}\mathsf{\_f64x2\_s\_zero}\\ &&|& \def\mathdef3271#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3271{i32x4.trunc\_sat\_f64x2\_u\_zero} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{i{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{trunc\_sat}}\mathsf{\_f64x2\_u\_zero}\\ &&|& \def\mathdef3272#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3272{f32x4.convert\_i32x4\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{convert}}\mathsf{\_i32x4\_s}\\ &&|& \def\mathdef3273#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3273{f32x4.convert\_i32x4\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{convert}}\mathsf{\_i32x4\_u}\\ &&|& \def\mathdef3274#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3274{f64x2.convert\_low\_i32x4\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{convert}}\mathsf{\_low\_i32x4\_s}\\ &&|& \def\mathdef3275#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3275{f64x2.convert\_low\_i32x4\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{convert}}\mathsf{\_low\_i32x4\_u}\\ &&|& \def\mathdef3276#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3276{f32x4.demote\_f64x2\_zero} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle32}x\scriptstyle4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{demote}}\mathsf{\_f64x2\_zero}\\ &&|& \def\mathdef3277#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3277{f64x2.promote\_low\_f32x4} &\Rightarrow& \href{../syntax/instructions.html#syntax-shape}{\mathsf{f{\scriptstyle64}x\scriptstyle2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{promote}}\mathsf{\_low\_f32x4}\\ \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 \(\def\mathdef3278#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3278{end}\) delimiter. For \(\href{../syntax/instructions.html#syntax-instr-control}{\mathsf{if}}\) instructions, both branches have to be wrapped into nested S-expressions, headed by the keywords \(\def\mathdef3279#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3279{then}\) and \(\def\mathdef3280#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3280{else}\).

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

\[\begin{split}\begin{array}{lllll} \def\mathdef2634#1{{}}\mathdef2634{instruction} & \def\mathdef3281#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3281{(}~\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}~~\href{../text/instructions.html#text-foldedinstr}{\mathtt{foldedinstr}}^\ast~\def\mathdef3282#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3282{)} &\equiv\quad \href{../text/instructions.html#text-foldedinstr}{\mathtt{foldedinstr}}^\ast~~\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}} \\ & \def\mathdef3283#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3283{(}~\def\mathdef3284#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3284{block}~~\href{../text/instructions.html#text-label}{\mathtt{label}}~~\href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}~~\href{../text/instructions.html#text-instr}{\mathtt{instr}}^\ast~\def\mathdef3285#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3285{)} &\equiv\quad \def\mathdef3286#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3286{block}~~\href{../text/instructions.html#text-label}{\mathtt{label}}~~\href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}~~\href{../text/instructions.html#text-instr}{\mathtt{instr}}^\ast~~\def\mathdef3287#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3287{end} \\ & \def\mathdef3288#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3288{(}~\def\mathdef3289#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3289{loop}~~\href{../text/instructions.html#text-label}{\mathtt{label}}~~\href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}~~\href{../text/instructions.html#text-instr}{\mathtt{instr}}^\ast~\def\mathdef3290#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3290{)} &\equiv\quad \def\mathdef3291#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3291{loop}~~\href{../text/instructions.html#text-label}{\mathtt{label}}~~\href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}~~\href{../text/instructions.html#text-instr}{\mathtt{instr}}^\ast~~\def\mathdef3292#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3292{end} \\ & \def\mathdef3293#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3293{(}~\def\mathdef3294#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3294{if}~~\href{../text/instructions.html#text-label}{\mathtt{label}}~~\href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}~~\href{../text/instructions.html#text-foldedinstr}{\mathtt{foldedinstr}}^\ast &\hspace{-3ex} \def\mathdef3295#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3295{(}~\def\mathdef3296#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3296{then}~~\href{../text/instructions.html#text-instr}{\mathtt{instr}}_1^\ast~\def\mathdef3297#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3297{)}~~(\def\mathdef3298#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3298{(}~\def\mathdef3299#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3299{else}~~\href{../text/instructions.html#text-instr}{\mathtt{instr}}_2^\ast~\def\mathdef3300#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3300{)})^?~~\def\mathdef3301#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3301{)} \quad\equiv \\ &\qquad \href{../text/instructions.html#text-foldedinstr}{\mathtt{foldedinstr}}^\ast~~\def\mathdef3302#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3302{if}~~\href{../text/instructions.html#text-label}{\mathtt{label}} &\hspace{-12ex} \href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}~~\href{../text/instructions.html#text-instr}{\mathtt{instr}}_1^\ast~~\def\mathdef3303#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3303{else}~~(\href{../text/instructions.html#text-instr}{\mathtt{instr}}_2^\ast)^?~\def\mathdef3304#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3304{end} \\ & \def\mathdef3305#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3305{(}~\def\mathdef3306#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3306{try\_table}~~\href{../text/instructions.html#text-label}{\mathtt{label}}~~\href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}~~\href{../text/instructions.html#text-catch}{\mathtt{catch}}^\ast~~\href{../text/instructions.html#text-instr}{\mathtt{instr}}^\ast~\def\mathdef3307#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3307{)} \quad\equiv \\ &\qquad \def\mathdef3308#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3308{try\_table}~~\href{../text/instructions.html#text-label}{\mathtt{label}}~~\href{../text/instructions.html#text-blocktype}{\mathtt{blocktype}}~~\href{../text/instructions.html#text-catch}{\mathtt{catch}}^\ast~~\href{../text/instructions.html#text-instr}{\mathtt{instr}}^\ast~~\def\mathdef3309#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3309{end} \\ \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. No explicit \(\def\mathdef3310#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3310{end}\) keyword is included, since they only occur in bracketed positions.

\[\begin{split}\begin{array}{llclll} \def\mathdef2634#1{{}}\mathdef2634{expression} & \href{../text/instructions.html#text-expr}{\mathtt{expr}}_I &::=& (\mathit{in}{:}\href{../text/instructions.html#text-instr}{\mathtt{instr}}_I)^\ast &\Rightarrow& \mathit{in}^\ast~\href{../syntax/instructions.html#syntax-instr-control}{\mathsf{end}} \\ \end{array}\end{split}\]