Instructions

Instructions are syntactically distinguished into plain and structured instructions.

\[\begin{split}\begin{array}{llclll} \def\mathdef3269#1{{}}\mathdef3269{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\mathdef3269#1{{}}\mathdef3269{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\mathdef3269#1{{}}\mathdef3269{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\mathdef3269#1{{}}\mathdef3269{block instruction} & \href{../text/instructions.html#text-blockinstr}{\mathtt{blockinstr}}_I &::=& \def\mathdef3309#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3309{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\mathdef3310#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3310{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\mathdef3311#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3311{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\mathdef3312#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3312{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\mathdef3313#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3313{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\mathdef3314#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3314{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\mathdef3315#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3315{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\mathdef3316#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3316{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\mathdef3317#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3317{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\mathdef3269#1{{}}\mathdef3269{catch clause} & \href{../text/instructions.html#text-catch}{\mathtt{catch}}_I & \begin{array}[t]{@{}c@{}} ::= \\ | \\ | \\ | \\ \end{array} & \begin{array}[t]{@{}lcll@{}} \def\mathdef3318#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3318{(}~\def\mathdef3319#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3319{catch}~~x{:}\href{../text/modules.html#text-tagidx}{\mathtt{tagidx}}_I~~l{:}\href{../text/modules.html#text-labelidx}{\mathtt{labelidx}}_I~\def\mathdef3320#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3320{)} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{catch}}~x~l \\ \def\mathdef3321#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3321{(}~\def\mathdef3322#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3322{catch\_ref}~~x{:}\href{../text/modules.html#text-tagidx}{\mathtt{tagidx}}_I~~l{:}\href{../text/modules.html#text-labelidx}{\mathtt{labelidx}}_I~\def\mathdef3323#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3323{)} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{catch\_ref}}~x~l \\ \def\mathdef3324#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3324{(}~\def\mathdef3325#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3325{catch\_all}~~l{:}\href{../text/modules.html#text-labelidx}{\mathtt{labelidx}}_I~\def\mathdef3326#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3326{)} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{catch\_all}}~l \\ \def\mathdef3327#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3327{(}~\def\mathdef3328#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3328{catch\_all\_ref}~~l{:}\href{../text/modules.html#text-labelidx}{\mathtt{labelidx}}_I~\def\mathdef3329#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3329{)} &\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\mathdef3269#1{{}}\mathdef3269{plain instruction} & \href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I &::=& \def\mathdef3330#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3330{unreachable} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{unreachable}} \\ &&|& \def\mathdef3331#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3331{nop} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{nop}} \\ &&|& \def\mathdef3332#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3332{br}~~l{:}\href{../text/modules.html#text-labelidx}{\mathtt{labelidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{br}}~l \\ &&|& \def\mathdef3333#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3333{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\mathdef3334#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3334{br\_table}~~l^\ast{:}\href{../text/conventions.html#text-vec}{\mathtt{vec}}(\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\mathdef3335#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3335{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\mathdef3336#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3336{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\mathdef3337#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3337{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\mathdef3338#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3338{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\mathdef3339#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3339{return} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{return}} \\ &&|& \def\mathdef3340#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3340{call}~~x{:}\href{../text/modules.html#text-funcidx}{\mathtt{funcidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{call}}~x \\ &&|& \def\mathdef3341#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3341{call\_ref}~~x{:}\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{call\_ref}}~x \\ &&|& \def\mathdef3342#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3342{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\mathdef3343#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3343{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\mathdef3344#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3344{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\mathdef3345#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3345{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\mathdef3346#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3346{throw}~~x{:}\href{../text/modules.html#text-tagidx}{\mathtt{tagidx}}_I &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-control}{\mathsf{throw}}~x \\ &&|& \def\mathdef3347#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3347{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\mathdef3348#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3348{else}\) keyword of an \(\def\mathdef3349#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3349{if}\) instruction can be omitted if the following instruction sequence is empty.

\[\begin{array}{llclll} \def\mathdef3269#1{{}}\mathdef3269{block instruction} & \def\mathdef3350#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3350{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\mathdef3351#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3351{end} &\equiv& \def\mathdef3352#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3352{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\mathdef3353#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3353{else}~~\def\mathdef3354#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3354{end} \end{array}\]

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

\[\begin{split}\begin{array}{llclll} \def\mathdef3269#1{{}}\mathdef3269{plain instruction} & \def\mathdef3357#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3357{call\_indirect}~~\href{../text/modules.html#text-typeuse}{\mathtt{typeuse}} &\equiv& \def\mathdef3358#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3358{call\_indirect}~~0~~\href{../text/modules.html#text-typeuse}{\mathtt{typeuse}} \\ \def\mathdef3359#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3359{return\_call\_indirect}~~\href{../text/modules.html#text-typeuse}{\mathtt{typeuse}} &\equiv& \def\mathdef3360#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3360{return\_call\_indirect}~~0~~\href{../text/modules.html#text-typeuse}{\mathtt{typeuse}} \\ \end{array}\end{split}\]

Reference Instructions

\[\begin{split}\begin{array}{llclll} \def\mathdef3269#1{{}}\mathdef3269{instruction} & \href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I &::=& \dots \\ &&|& \def\mathdef3361#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3361{ref.null}~~t{:}\href{../text/types.html#text-heaptype}{\mathtt{heaptype}} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-ref}{\mathsf{ref.null}}~t \\ &&|& \def\mathdef3362#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3362{ref.func}~~x{:}\href{../text/modules.html#text-funcidx}{\mathtt{funcidx}} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-ref}{\mathsf{ref.func}}~x \\ &&|& \def\mathdef3363#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3363{ref.is\_null} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-ref}{\mathsf{ref.is\_null}} \\ &&|& \def\mathdef3364#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3364{ref.as\_non\_null} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-ref}{\mathsf{ref.as\_non\_null}} \\ &&|& \def\mathdef3365#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3365{ref.eq} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-ref}{\mathsf{ref.eq}} \\ &&|& \def\mathdef3366#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3366{ref.test}~~t{:}\href{../text/types.html#text-reftype}{\mathtt{reftype}} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-ref}{\mathsf{ref.test}}~t \\ &&|& \def\mathdef3367#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3367{ref.cast}~~t{:}\href{../text/types.html#text-reftype}{\mathtt{reftype}} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-ref}{\mathsf{ref.cast}}~t \\ &&|& \def\mathdef3368#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3368{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\mathdef3369#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3369{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\mathdef3370#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3370{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\mathdef3371#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3371{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\mathdef3372#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3372{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\mathdef3373#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3373{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\mathdef3374#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3374{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\mathdef3375#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3375{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\mathdef3376#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3376{array.new\_fixed}~~x{:}\href{../text/modules.html#text-typeidx}{\mathtt{typeidx}}_I~~n{:}\href{../text/values.html#text-int}{\def\mathdef3295#1{{\mathtt{u}#1}}\mathdef3295{\mathtt{32}}} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array.new\_fixed}}~x~n \\ &&|& \def\mathdef3377#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3377{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\mathdef3378#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3378{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\mathdef3379#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3379{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\mathdef3380#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3380{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\mathdef3381#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3381{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\mathdef3382#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3382{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\mathdef3383#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3383{array.len} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-array}{\mathsf{array.len}} \\ &&|& \def\mathdef3384#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3384{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\mathdef3385#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3385{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\mathdef3386#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3386{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\mathdef3387#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3387{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\mathdef3388#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3388{ref.i31} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-i31}{\mathsf{ref.i31}} \\ &&|& \def\mathdef3389#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3389{i31.get\_u} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-i31}{\mathsf{i31.get\_u}} \\ &&|& \def\mathdef3390#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3390{i31.get\_s} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-i31}{\mathsf{i31.get\_s}} \\ &&|& \def\mathdef3391#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3391{any.convert\_extern} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-extern}{\mathsf{any.convert\_extern}} \\ &&|& \def\mathdef3392#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3392{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\mathdef3269#1{{}}\mathdef3269{instruction} & \href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I &::=& \dots \\ &&|& \def\mathdef3393#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3393{drop} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-parametric}{\mathsf{drop}} \\ &&|& \def\mathdef3394#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3394{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\mathdef3269#1{{}}\mathdef3269{instruction} & \href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I &::=& \dots \\ &&|& \def\mathdef3395#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3395{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\mathdef3396#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3396{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\mathdef3397#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3397{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\mathdef3398#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3398{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\mathdef3399#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3399{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\mathdef3269#1{{}}\mathdef3269{instruction} & \href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I &::=& \dots \\ &&|& \def\mathdef3400#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3400{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\mathdef3401#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3401{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\mathdef3402#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3402{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\mathdef3403#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3403{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\mathdef3404#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3404{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\mathdef3405#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3405{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\mathdef3406#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3406{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\mathdef3407#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3407{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\mathdef3269#1{{}}\mathdef3269{instruction} & \def\mathdef3408#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3408{table.get} &\equiv& \def\mathdef3409#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3409{table.get}~~\def\mathdef3410#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3410{0} \\ & \def\mathdef3411#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3411{table.set} &\equiv& \def\mathdef3412#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3412{table.set}~~\def\mathdef3413#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3413{0} \\ & \def\mathdef3414#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3414{table.size} &\equiv& \def\mathdef3415#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3415{table.size}~~\def\mathdef3416#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3416{0} \\ & \def\mathdef3417#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3417{table.grow} &\equiv& \def\mathdef3418#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3418{table.grow}~~\def\mathdef3419#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3419{0} \\ & \def\mathdef3420#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3420{table.fill} &\equiv& \def\mathdef3421#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3421{table.fill}~~\def\mathdef3422#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3422{0} \\ & \def\mathdef3423#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3423{table.copy} &\equiv& \def\mathdef3424#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3424{table.copy}~~\def\mathdef3425#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3425{0}~~\def\mathdef3426#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3426{0} \\ & \def\mathdef3427#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3427{table.init}~~x{:}\href{../text/modules.html#text-elemidx}{\mathtt{elemidx}}_I &\equiv& \def\mathdef3428#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3428{table.init}~~\def\mathdef3429#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3429{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\mathdef3430#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3430{=}\).

\[\begin{split}\begin{array}{llcllll} \def\mathdef3269#1{{}}\mathdef3269{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\mathdef3269#1{{}}\mathdef3269{memory offset} & \href{../text/instructions.html#text-memarg}{\mathtt{offset}} &::=& \def\mathdef3431#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3431{offset{=}}o{:}\href{../text/values.html#text-int}{\def\mathdef3295#1{{\mathtt{u}#1}}\mathdef3295{\mathtt{32}}} &\Rightarrow& o \\ &&|& \epsilon &\Rightarrow& 0 \\ \def\mathdef3269#1{{}}\mathdef3269{memory alignment} & \href{../text/instructions.html#text-memarg}{\mathtt{align}}_N &::=& \def\mathdef3432#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3432{align{=}}a{:}\href{../text/values.html#text-int}{\def\mathdef3295#1{{\mathtt{u}#1}}\mathdef3295{\mathtt{32}}} &\Rightarrow& a \\ &&|& \epsilon &\Rightarrow& N \\ \def\mathdef3269#1{{}}\mathdef3269{instruction} & \href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I &::=& \dots \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\ &&|& \def\mathdef3433#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3433{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-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}~x~m \\ &&|& \def\mathdef3434#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3434{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-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}~x~m \\ &&|& \def\mathdef3435#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3435{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-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}~x~m \\ &&|& \def\mathdef3436#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3436{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-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}~x~m \\ &&|& \def\mathdef3437#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3437{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-valtype}{\mathsf{v128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}~x~m \\ &&|& \def\mathdef3438#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3438{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-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{8\_s}~x~m \\ &&|& \def\mathdef3439#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3439{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-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{8\_u}~x~m \\ &&|& \def\mathdef3440#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3440{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-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{16\_s}~x~m \\ &&|& \def\mathdef3441#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3441{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-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{16\_u}~x~m \\ &&|& \def\mathdef3442#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3442{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-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{8\_s}~x~m \\ &&|& \def\mathdef3443#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3443{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-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{8\_u}~x~m \\ &&|& \def\mathdef3444#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3444{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-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{16\_s}~x~m \\ &&|& \def\mathdef3445#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3445{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-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{16\_u}~x~m \\ &&|& \def\mathdef3446#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3446{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-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{32\_s}~x~m \\ &&|& \def\mathdef3447#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3447{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-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{32\_u}~x~m \\ &&|& \def\mathdef3448#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3448{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-valtype}{\mathsf{v128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{8x8\_s}~x~m \\ &&|& \def\mathdef3449#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3449{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-valtype}{\mathsf{v128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{8x8\_u}~x~m \\ &&|& \def\mathdef3450#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3450{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-valtype}{\mathsf{v128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{16x4\_s}~x~m \\ &&|& \def\mathdef3451#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3451{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-valtype}{\mathsf{v128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{16x4\_u}~x~m \\ &&|& \def\mathdef3452#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3452{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-valtype}{\mathsf{v128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{32x2\_s}~x~m \\ &&|& \def\mathdef3453#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3453{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-valtype}{\mathsf{v128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{32x2\_u}~x~m \\ &&|& \def\mathdef3454#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3454{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-valtype}{\mathsf{v128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{8\_splat}~x~m \\ &&|& \def\mathdef3455#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3455{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-valtype}{\mathsf{v128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{16\_splat}~x~m \\ &&|& \def\mathdef3456#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3456{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-valtype}{\mathsf{v128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{32\_splat}~x~m \\ &&|& \def\mathdef3457#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3457{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-valtype}{\mathsf{v128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{64\_splat}~x~m \\ &&|& \def\mathdef3458#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3458{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-valtype}{\mathsf{v128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{32\_zero}~x~m \\ &&|& \def\mathdef3459#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3459{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-valtype}{\mathsf{v128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{64\_zero}~x~m \\ &&|& \def\mathdef3460#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3460{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\mathdef3293#1{{\mathtt{u}#1}}\mathdef3293{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{v128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{8\_lane}~x~m~y \\ &&|& \def\mathdef3461#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3461{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\mathdef3293#1{{\mathtt{u}#1}}\mathdef3293{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{v128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{16\_lane}~x~m~y \\ &&|& \def\mathdef3462#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3462{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\mathdef3293#1{{\mathtt{u}#1}}\mathdef3293{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{v128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{32\_lane}~x~m~y \\ &&|& \def\mathdef3463#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3463{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\mathdef3293#1{{\mathtt{u}#1}}\mathdef3293{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{v128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{64\_lane}~x~m~y \\ &&|& \def\mathdef3464#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3464{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-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}~x~m \\ &&|& \def\mathdef3465#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3465{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-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}~x~m \\ &&|& \def\mathdef3466#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3466{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-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}~x~m \\ &&|& \def\mathdef3467#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3467{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-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}~x~m \\ &&|& \def\mathdef3468#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3468{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-valtype}{\mathsf{v128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}~x~m \\ &&|& \def\mathdef3469#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3469{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-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}\mathsf{8}~x~m \\ &&|& \def\mathdef3470#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3470{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-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}\mathsf{16}~x~m \\ &&|& \def\mathdef3471#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3471{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-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}\mathsf{8}~x~m \\ &&|& \def\mathdef3472#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3472{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-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}\mathsf{16}~x~m \\ &&|& \def\mathdef3473#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3473{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-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}\mathsf{32}~x~m \\ &&|& \def\mathdef3474#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3474{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\mathdef3293#1{{\mathtt{u}#1}}\mathdef3293{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{v128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}\mathsf{8\_lane}~x~m~y \\ &&|& \def\mathdef3475#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3475{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\mathdef3293#1{{\mathtt{u}#1}}\mathdef3293{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{v128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}\mathsf{16\_lane}~x~m~y \\ &&|& \def\mathdef3476#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3476{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\mathdef3293#1{{\mathtt{u}#1}}\mathdef3293{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{v128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}\mathsf{32\_lane}~x~m~y \\ &&|& \def\mathdef3477#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3477{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\mathdef3293#1{{\mathtt{u}#1}}\mathdef3293{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{v128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}\mathsf{64\_lane}~x~m~y \\ \def\mathdef3478#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3478{memory.size}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{memory.size}}~x \\ &&|& \def\mathdef3479#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3479{memory.grow}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{memory.grow}}~x \\ &&|& \def\mathdef3480#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3480{memory.fill}~~x{:}\href{../text/modules.html#text-memidx}{\mathtt{memidx}} &\Rightarrow& \href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{memory.fill}}~x \\ &&|& \def\mathdef3481#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3481{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\mathdef3482#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3482{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\mathdef3483#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3483{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\mathdef3269#1{{}}\mathdef3269{instruction} & \href{../text/types.html#text-numtype}{\mathtt{numtype}}\def\mathdef3484#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3484{.load}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} &\equiv& \href{../text/types.html#text-numtype}{\mathtt{numtype}}\def\mathdef3485#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3485{.load}~~\def\mathdef3486#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3486{0}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} \\& \href{../text/types.html#text-vectype}{\mathtt{vectype}}\def\mathdef3487#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3487{.load}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} &\equiv& \href{../text/types.html#text-vectype}{\mathtt{vectype}}\def\mathdef3488#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3488{.load}~~\def\mathdef3489#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3489{0}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} \\& \href{../text/types.html#text-numtype}{\mathtt{numtype}}\def\mathdef3490#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3490{.load}N\def\mathdef3491#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3491{\_}\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\mathdef3492#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3492{.load}N\def\mathdef3493#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3493{\_}\href{../syntax/instructions.html#syntax-sx}{\mathit{sx}}~~\def\mathdef3494#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3494{0}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} \\& \href{../text/types.html#text-vectype}{\mathtt{vectype}}\def\mathdef3495#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3495{.load}{N}\mathsf{x}M\def\mathdef3496#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3496{\_}\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\mathdef3497#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3497{.load}{N}\mathsf{x}M\def\mathdef3498#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3498{\_}\href{../syntax/instructions.html#syntax-sx}{\mathit{sx}}~~\def\mathdef3499#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3499{0}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} \\& \href{../text/types.html#text-vectype}{\mathtt{vectype}}\def\mathdef3500#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3500{.load}N\def\mathdef3501#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3501{\_splat}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} &\equiv& \href{../text/types.html#text-vectype}{\mathtt{vectype}}\def\mathdef3502#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3502{.load}N\def\mathdef3503#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3503{\_splat}~~\def\mathdef3504#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3504{0}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} \\& \href{../text/types.html#text-vectype}{\mathtt{vectype}}\def\mathdef3505#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3505{.load}N\def\mathdef3506#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3506{\_zero}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} &\equiv& \href{../text/types.html#text-vectype}{\mathtt{vectype}}\def\mathdef3507#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3507{.load}N\def\mathdef3508#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3508{\_zero}~~\def\mathdef3509#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3509{0}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} \\& \href{../text/types.html#text-vectype}{\mathtt{vectype}}\def\mathdef3510#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3510{.load}N\def\mathdef3511#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3511{\_lane}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}~~\href{../text/values.html#text-int}{\def\mathdef3293#1{{\mathtt{u}#1}}\mathdef3293{\mathtt{8}}} &\equiv& \href{../text/types.html#text-vectype}{\mathtt{vectype}}\def\mathdef3512#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3512{.load}N\def\mathdef3513#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3513{\_lane}~~\def\mathdef3514#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3514{0}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}~~\href{../text/values.html#text-int}{\def\mathdef3293#1{{\mathtt{u}#1}}\mathdef3293{\mathtt{8}}} \\& \href{../text/types.html#text-numtype}{\mathtt{numtype}}\def\mathdef3515#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3515{.store}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} &\equiv& \href{../text/types.html#text-numtype}{\mathtt{numtype}}\def\mathdef3516#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3516{.store}~~\def\mathdef3517#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3517{0}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} \\& \href{../text/types.html#text-vectype}{\mathtt{vectype}}\def\mathdef3518#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3518{.store}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} &\equiv& \href{../text/types.html#text-vectype}{\mathtt{vectype}}\def\mathdef3519#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3519{.store}~~\def\mathdef3520#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3520{0}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} \\& \href{../text/types.html#text-numtype}{\mathtt{numtype}}\def\mathdef3521#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3521{.store}N~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} &\equiv& \href{../text/types.html#text-numtype}{\mathtt{numtype}}\def\mathdef3522#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3522{.store}N~~\def\mathdef3523#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3523{0}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}} \\& \href{../text/types.html#text-vectype}{\mathtt{vectype}}\def\mathdef3524#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3524{.store}N\def\mathdef3525#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3525{\_lane}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}~~\href{../text/values.html#text-int}{\def\mathdef3293#1{{\mathtt{u}#1}}\mathdef3293{\mathtt{8}}} &\equiv& \href{../text/types.html#text-vectype}{\mathtt{vectype}}\def\mathdef3526#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3526{.store}N\def\mathdef3527#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3527{\_lane}~~\def\mathdef3528#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3528{0}~~\href{../text/instructions.html#text-memarg}{\mathtt{memarg}}~~\href{../text/values.html#text-int}{\def\mathdef3293#1{{\mathtt{u}#1}}\mathdef3293{\mathtt{8}}} \\& \def\mathdef3529#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3529{memory.size} &\equiv& \def\mathdef3530#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3530{memory.size}~~\def\mathdef3531#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3531{0} \\& \def\mathdef3532#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3532{memory.grow} &\equiv& \def\mathdef3533#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3533{memory.grow}~~\def\mathdef3534#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3534{0} \\& \def\mathdef3535#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3535{memory.fill} &\equiv& \def\mathdef3536#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3536{memory.fill}~~\def\mathdef3537#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3537{0} \\& \def\mathdef3538#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3538{memory.copy} &\equiv& \def\mathdef3539#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3539{memory.copy}~~\def\mathdef3540#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3540{0}~~\def\mathdef3541#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3541{0} \\& \def\mathdef3542#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3542{memory.init}~~x{:}\href{../text/modules.html#text-elemidx}{\mathtt{elemidx}}_I &\equiv& \def\mathdef3543#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3543{memory.init}~~\def\mathdef3544#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3544{0}~~x{:}\href{../text/modules.html#text-elemidx}{\mathtt{elemidx}}_I \end{array}\end{split}\]

Numeric Instructions

\[\begin{split}\begin{array}{llclll} \def\mathdef3269#1{{}}\mathdef3269{instruction} & \href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I &::=& \dots \\&&|& \def\mathdef3545#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3545{i32.const}~~n{:}\href{../text/values.html#text-int}{\def\mathdef3303#1{{\mathtt{i}#1}}\mathdef3303{\mathtt{32}}} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{const}}~n \\ &&|& \def\mathdef3546#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3546{i64.const}~~n{:}\href{../text/values.html#text-int}{\def\mathdef3304#1{{\mathtt{i}#1}}\mathdef3304{\mathtt{64}}} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{const}}~n \\ &&|& \def\mathdef3547#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3547{f32.const}~~z{:}\href{../text/values.html#text-float}{\def\mathdef3307#1{{\mathtt{f}#1}}\mathdef3307{\mathtt{32}}} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{const}}~z \\ &&|& \def\mathdef3548#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3548{f64.const}~~z{:}\href{../text/values.html#text-float}{\def\mathdef3308#1{{\mathtt{f}#1}}\mathdef3308{\mathtt{64}}} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{const}}~z \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef3269#1{{}}\mathdef3269{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{thisisenough} && \phantom{thisshouldbeenough} \\[-2ex] &&|& \def\mathdef3549#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3549{i32.clz} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{clz}} \\ &&|& \def\mathdef3550#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3550{i32.ctz} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ctz}} \\ &&|& \def\mathdef3551#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3551{i32.popcnt} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{popcnt}} \\ &&|& \def\mathdef3552#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3552{i32.add} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{add}} \\ &&|& \def\mathdef3553#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3553{i32.sub} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{sub}} \\ &&|& \def\mathdef3554#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3554{i32.mul} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{mul}} \\ &&|& \def\mathdef3555#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3555{i32.div\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{div}}\mathsf{\_s} \\ &&|& \def\mathdef3556#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3556{i32.div\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{div}}\mathsf{\_u} \\ &&|& \def\mathdef3557#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3557{i32.rem\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{rem}}\mathsf{\_s} \\ &&|& \def\mathdef3558#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3558{i32.rem\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{rem}}\mathsf{\_u} \\ &&|& \def\mathdef3559#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3559{i32.and} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{and}} \\ &&|& \def\mathdef3560#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3560{i32.or} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{or}} \\ &&|& \def\mathdef3561#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3561{i32.xor} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{xor}} \\ &&|& \def\mathdef3562#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3562{i32.shl} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{shl}} \\ &&|& \def\mathdef3563#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3563{i32.shr\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{shr}}\mathsf{\_s} \\ &&|& \def\mathdef3564#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3564{i32.shr\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{shr}}\mathsf{\_u} \\ &&|& \def\mathdef3565#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3565{i32.rotl} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{rotl}} \\ &&|& \def\mathdef3566#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3566{i32.rotr} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{rotr}} \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef3269#1{{}}\mathdef3269{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{thisisenough} && \phantom{thisshouldbeenough} \\[-2ex] &&|& \def\mathdef3567#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3567{i64.clz} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{clz}} \\ &&|& \def\mathdef3568#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3568{i64.ctz} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ctz}} \\ &&|& \def\mathdef3569#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3569{i64.popcnt} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{popcnt}} \\ &&|& \def\mathdef3570#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3570{i64.add} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{add}} \\ &&|& \def\mathdef3571#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3571{i64.sub} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{sub}} \\ &&|& \def\mathdef3572#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3572{i64.mul} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{mul}} \\ &&|& \def\mathdef3573#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3573{i64.div\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{div}}\mathsf{\_s} \\ &&|& \def\mathdef3574#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3574{i64.div\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{div}}\mathsf{\_u} \\ &&|& \def\mathdef3575#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3575{i64.rem\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{rem}}\mathsf{\_s} \\ &&|& \def\mathdef3576#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3576{i64.rem\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{rem}}\mathsf{\_u} \\ &&|& \def\mathdef3577#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3577{i64.and} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{and}} \\ &&|& \def\mathdef3578#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3578{i64.or} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{or}} \\ &&|& \def\mathdef3579#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3579{i64.xor} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{xor}} \\ &&|& \def\mathdef3580#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3580{i64.shl} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{shl}} \\ &&|& \def\mathdef3581#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3581{i64.shr\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{shr}}\mathsf{\_s} \\ &&|& \def\mathdef3582#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3582{i64.shr\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{shr}}\mathsf{\_u} \\ &&|& \def\mathdef3583#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3583{i64.rotl} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{rotl}} \\ &&|& \def\mathdef3584#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3584{i64.rotr} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{rotr}} \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef3269#1{{}}\mathdef3269{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{thisisenough} && \phantom{thisshouldbeenough} \\[-2ex] &&|& \def\mathdef3585#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3585{f32.abs} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{abs}} \\ &&|& \def\mathdef3586#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3586{f32.neg} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{neg}} \\ &&|& \def\mathdef3587#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3587{f32.ceil} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ceil}} \\ &&|& \def\mathdef3588#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3588{f32.floor} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{floor}} \\ &&|& \def\mathdef3589#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3589{f32.trunc} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}} \\ &&|& \def\mathdef3590#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3590{f32.nearest} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{nearest}} \\ &&|& \def\mathdef3591#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3591{f32.sqrt} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{sqrt}} \\ &&|& \def\mathdef3592#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3592{f32.add} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{add}} \\ &&|& \def\mathdef3593#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3593{f32.sub} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{sub}} \\ &&|& \def\mathdef3594#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3594{f32.mul} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{mul}} \\ &&|& \def\mathdef3595#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3595{f32.div} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{div}} \\ &&|& \def\mathdef3596#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3596{f32.min} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{min}} \\ &&|& \def\mathdef3597#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3597{f32.max} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{max}} \\ &&|& \def\mathdef3598#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3598{f32.copysign} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{copysign}} \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef3269#1{{}}\mathdef3269{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{thisisenough} && \phantom{thisshouldbeenough} \\[-2ex] &&|& \def\mathdef3599#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3599{f64.abs} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{abs}} \\ &&|& \def\mathdef3600#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3600{f64.neg} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{neg}} \\ &&|& \def\mathdef3601#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3601{f64.ceil} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ceil}} \\ &&|& \def\mathdef3602#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3602{f64.floor} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{floor}} \\ &&|& \def\mathdef3603#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3603{f64.trunc} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}} \\ &&|& \def\mathdef3604#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3604{f64.nearest} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{nearest}} \\ &&|& \def\mathdef3605#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3605{f64.sqrt} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{sqrt}} \\ &&|& \def\mathdef3606#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3606{f64.add} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{add}} \\ &&|& \def\mathdef3607#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3607{f64.sub} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{sub}} \\ &&|& \def\mathdef3608#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3608{f64.mul} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{mul}} \\ &&|& \def\mathdef3609#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3609{f64.div} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{div}} \\ &&|& \def\mathdef3610#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3610{f64.min} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{min}} \\ &&|& \def\mathdef3611#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3611{f64.max} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{max}} \\ &&|& \def\mathdef3612#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3612{f64.copysign} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{copysign}} \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef3269#1{{}}\mathdef3269{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{thisisenough} && \phantom{thisshouldbeenough} \\[-2ex] &&|& \def\mathdef3613#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3613{i32.eqz} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{eqz}} \\ &&|& \def\mathdef3614#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3614{i32.eq} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{eq}} \\ &&|& \def\mathdef3615#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3615{i32.ne} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ne}} \\ &&|& \def\mathdef3616#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3616{i32.lt\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{lt}}\mathsf{\_s} \\ &&|& \def\mathdef3617#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3617{i32.lt\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{lt}}\mathsf{\_u} \\ &&|& \def\mathdef3618#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3618{i32.gt\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{gt}}\mathsf{\_s} \\ &&|& \def\mathdef3619#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3619{i32.gt\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{gt}}\mathsf{\_u} \\ &&|& \def\mathdef3620#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3620{i32.le\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{le}}\mathsf{\_s} \\ &&|& \def\mathdef3621#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3621{i32.le\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{le}}\mathsf{\_u} \\ &&|& \def\mathdef3622#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3622{i32.ge\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ge}}\mathsf{\_s} \\ &&|& \def\mathdef3623#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3623{i32.ge\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ge}}\mathsf{\_u} \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef3269#1{{}}\mathdef3269{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{thisisenough} && \phantom{thisshouldbeenough} \\[-2ex] &&|& \def\mathdef3624#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3624{i64.eqz} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{eqz}} \\ &&|& \def\mathdef3625#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3625{i64.eq} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{eq}} \\ &&|& \def\mathdef3626#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3626{i64.ne} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ne}} \\ &&|& \def\mathdef3627#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3627{i64.lt\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{lt}}\mathsf{\_s} \\ &&|& \def\mathdef3628#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3628{i64.lt\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{lt}}\mathsf{\_u} \\ &&|& \def\mathdef3629#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3629{i64.gt\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{gt}}\mathsf{\_s} \\ &&|& \def\mathdef3630#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3630{i64.gt\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{gt}}\mathsf{\_u} \\ &&|& \def\mathdef3631#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3631{i64.le\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{le}}\mathsf{\_s} \\ &&|& \def\mathdef3632#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3632{i64.le\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{le}}\mathsf{\_u} \\ &&|& \def\mathdef3633#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3633{i64.ge\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ge}}\mathsf{\_s} \\ &&|& \def\mathdef3634#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3634{i64.ge\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ge}}\mathsf{\_u} \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef3269#1{{}}\mathdef3269{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{thisisenough} && \phantom{thisshouldbeenough} \\[-2ex] &&|& \def\mathdef3635#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3635{f32.eq} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{eq}} \\ &&|& \def\mathdef3636#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3636{f32.ne} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ne}} \\ &&|& \def\mathdef3637#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3637{f32.lt} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{lt}} \\ &&|& \def\mathdef3638#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3638{f32.gt} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{gt}} \\ &&|& \def\mathdef3639#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3639{f32.le} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{le}} \\ &&|& \def\mathdef3640#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3640{f32.ge} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ge}} \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef3269#1{{}}\mathdef3269{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{thisisenough} && \phantom{thisshouldbeenough} \\[-2ex] &&|& \def\mathdef3641#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3641{f64.eq} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{eq}} \\ &&|& \def\mathdef3642#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3642{f64.ne} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ne}} \\ &&|& \def\mathdef3643#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3643{f64.lt} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{lt}} \\ &&|& \def\mathdef3644#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3644{f64.gt} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{gt}} \\ &&|& \def\mathdef3645#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3645{f64.le} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{le}} \\ &&|& \def\mathdef3646#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3646{f64.ge} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ge}} \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef3269#1{{}}\mathdef3269{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{thisisenough} && \phantom{thisshouldbeenough} \\[-2ex] &&|& \def\mathdef3647#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3647{i32.wrap\_i64} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{wrap}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{i64}} \\ &&|& \def\mathdef3648#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3648{i32.trunc\_f32\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}\mathsf{\_s} \\ &&|& \def\mathdef3649#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3649{i32.trunc\_f32\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}\mathsf{\_u} \\ &&|& \def\mathdef3650#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3650{i32.trunc\_f64\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}\mathsf{\_s} \\ &&|& \def\mathdef3651#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3651{i32.trunc\_f64\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}\mathsf{\_u} \\ &&|& \def\mathdef3652#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3652{i32.trunc\_sat\_f32\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_sat\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}\mathsf{\_s} \\ &&|& \def\mathdef3653#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3653{i32.trunc\_sat\_f32\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_sat\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}\mathsf{\_u} \\ &&|& \def\mathdef3654#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3654{i32.trunc\_sat\_f64\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_sat\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}\mathsf{\_s} \\ &&|& \def\mathdef3655#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3655{i32.trunc\_sat\_f64\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_sat\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}\mathsf{\_u} \\ &&|& \def\mathdef3656#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3656{i64.extend\_i32\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{extend}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}\mathsf{\_s} \\ &&|& \def\mathdef3657#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3657{i64.extend\_i32\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{extend}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}\mathsf{\_u} \\ &&|& \def\mathdef3658#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3658{i64.trunc\_f32\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}\mathsf{\_s} \\ &&|& \def\mathdef3659#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3659{i64.trunc\_f32\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}\mathsf{\_u} \\ &&|& \def\mathdef3660#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3660{i64.trunc\_f64\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}\mathsf{\_s} \\ &&|& \def\mathdef3661#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3661{i64.trunc\_f64\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}\mathsf{\_u} \\ &&|& \def\mathdef3662#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3662{i64.trunc\_sat\_f32\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_sat\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}\mathsf{\_s} \\ &&|& \def\mathdef3663#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3663{i64.trunc\_sat\_f32\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_sat\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}\mathsf{\_u} \\ &&|& \def\mathdef3664#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3664{i64.trunc\_sat\_f64\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_sat\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}\mathsf{\_s} \\ &&|& \def\mathdef3665#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3665{i64.trunc\_sat\_f64\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_sat\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}\mathsf{\_u} \\ &&|& \def\mathdef3666#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3666{f32.convert\_i32\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}\mathsf{\_s} \\ &&|& \def\mathdef3667#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3667{f32.convert\_i32\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}\mathsf{\_u} \\ &&|& \def\mathdef3668#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3668{f32.convert\_i64\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}\mathsf{\_s} \\ &&|& \def\mathdef3669#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3669{f32.convert\_i64\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}\mathsf{\_u} \\ &&|& \def\mathdef3670#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3670{f32.demote\_f64} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{demote}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{f64}} \\ &&|& \def\mathdef3671#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3671{f64.convert\_i32\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}\mathsf{\_s} \\ &&|& \def\mathdef3672#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3672{f64.convert\_i32\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}\mathsf{\_u} \\ &&|& \def\mathdef3673#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3673{f64.convert\_i64\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}\mathsf{\_s} \\ &&|& \def\mathdef3674#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3674{f64.convert\_i64\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}\mathsf{\_u} \\ &&|& \def\mathdef3675#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3675{f64.promote\_f32} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{promote}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{f32}} \\ &&|& \def\mathdef3676#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3676{i32.reinterpret\_f32} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{reinterpret}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{f32}} \\ &&|& \def\mathdef3677#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3677{i64.reinterpret\_f64} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{reinterpret}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{f64}} \\ &&|& \def\mathdef3678#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3678{f32.reinterpret\_i32} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{reinterpret}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{i32}} \\ &&|& \def\mathdef3679#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3679{f64.reinterpret\_i64} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{reinterpret}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{i64}} \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef3269#1{{}}\mathdef3269{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{thisisenough} && \phantom{thisshouldbeenough} \\[-2ex] &&|& \def\mathdef3680#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3680{i32.extend8\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{extend}}\mathsf{8\_s} \\ &&|& \def\mathdef3681#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3681{i32.extend16\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{extend}}\mathsf{16\_s} \\ &&|& \def\mathdef3682#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3682{i64.extend8\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{extend}}\mathsf{8\_s} \\ &&|& \def\mathdef3683#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3683{i64.extend16\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{extend}}\mathsf{16\_s} \\ &&|& \def\mathdef3684#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3684{i64.extend32\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\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\mathdef3269#1{{}}\mathdef3269{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3685#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3685{v128.const}~~\def\mathdef3686#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3686{i8x16}~~(n{:}\href{../text/values.html#text-int}{\def\mathdef3301#1{{\mathtt{i}#1}}\mathdef3301{\mathtt{8}}})^{16} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{v128}}.\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\mathdef3687#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3687{v128.const}~~\def\mathdef3688#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3688{i16x8}~~(n{:}\href{../text/values.html#text-int}{\def\mathdef3302#1{{\mathtt{i}#1}}\mathdef3302{\mathtt{16}}})^{8} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{v128}}.\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\mathdef3689#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3689{v128.const}~~\def\mathdef3690#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3690{i32x4}~~(n{:}\href{../text/values.html#text-int}{\def\mathdef3303#1{{\mathtt{i}#1}}\mathdef3303{\mathtt{32}}})^{4} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{v128}}.\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\mathdef3691#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3691{v128.const}~~\def\mathdef3692#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3692{i64x2}~~(n{:}\href{../text/values.html#text-int}{\def\mathdef3304#1{{\mathtt{i}#1}}\mathdef3304{\mathtt{64}}})^{2} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{v128}}.\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\mathdef3693#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3693{v128.const}~~\def\mathdef3694#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3694{f32x4}~~(z{:}\href{../text/values.html#text-float}{\def\mathdef3307#1{{\mathtt{f}#1}}\mathdef3307{\mathtt{32}}})^{4} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{v128}}.\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\mathdef3695#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3695{v128.const}~~\def\mathdef3696#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3696{f64x2}~~(z{:}\href{../text/values.html#text-float}{\def\mathdef3308#1{{\mathtt{f}#1}}\mathdef3308{\mathtt{64}}})^{2} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{v128}}.\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\mathdef3269#1{{}}\mathdef3269{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3697#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3697{i8x16.shuffle}~~(laneidx{:}\href{../text/values.html#text-int}{\def\mathdef3293#1{{\mathtt{u}#1}}\mathdef3293{\mathtt{8}}})^{16} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shuffle}}~laneidx^{16} \\ &&|& \def\mathdef3698#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3698{i8x16.swizzle} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{swizzle}} \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef3269#1{{}}\mathdef3269{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3699#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3699{i8x16.splat} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{splat}}\\ &&|& \def\mathdef3700#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3700{i16x8.splat} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{splat}}\\ &&|& \def\mathdef3701#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3701{i32x4.splat} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{splat}}\\ &&|& \def\mathdef3702#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3702{i64x2.splat} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{splat}}\\ &&|& \def\mathdef3703#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3703{f32x4.splat} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{splat}}\\ &&|& \def\mathdef3704#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3704{f64x2.splat} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{splat}}\\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef3269#1{{}}\mathdef3269{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3705#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3705{i8x16.extract\_lane\_s}~~laneidx{:}\href{../text/values.html#text-int}{\def\mathdef3293#1{{\mathtt{u}#1}}\mathdef3293{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extract\_lane}}\mathsf{\_s}~laneidx \\ &&|& \def\mathdef3706#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3706{i8x16.extract\_lane\_u}~~laneidx{:}\href{../text/values.html#text-int}{\def\mathdef3293#1{{\mathtt{u}#1}}\mathdef3293{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extract\_lane}}\mathsf{\_u}~laneidx \\ &&|& \def\mathdef3707#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3707{i8x16.replace\_lane}~~laneidx{:}\href{../text/values.html#text-int}{\def\mathdef3293#1{{\mathtt{u}#1}}\mathdef3293{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{replace\_lane}}~laneidx \\ &&|& \def\mathdef3708#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3708{i16x8.extract\_lane\_s}~~laneidx{:}\href{../text/values.html#text-int}{\def\mathdef3293#1{{\mathtt{u}#1}}\mathdef3293{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extract\_lane}}\mathsf{\_s}~laneidx \\ &&|& \def\mathdef3709#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3709{i16x8.extract\_lane\_u}~~laneidx{:}\href{../text/values.html#text-int}{\def\mathdef3293#1{{\mathtt{u}#1}}\mathdef3293{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extract\_lane}}\mathsf{\_u}~laneidx \\ &&|& \def\mathdef3710#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3710{i16x8.replace\_lane}~~laneidx{:}\href{../text/values.html#text-int}{\def\mathdef3293#1{{\mathtt{u}#1}}\mathdef3293{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{replace\_lane}}~laneidx \\ &&|& \def\mathdef3711#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3711{i32x4.extract\_lane}~~laneidx{:}\href{../text/values.html#text-int}{\def\mathdef3293#1{{\mathtt{u}#1}}\mathdef3293{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extract\_lane}}~laneidx \\ &&|& \def\mathdef3712#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3712{i32x4.replace\_lane}~~laneidx{:}\href{../text/values.html#text-int}{\def\mathdef3293#1{{\mathtt{u}#1}}\mathdef3293{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{replace\_lane}}~laneidx \\ &&|& \def\mathdef3713#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3713{i64x2.extract\_lane}~~laneidx{:}\href{../text/values.html#text-int}{\def\mathdef3293#1{{\mathtt{u}#1}}\mathdef3293{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extract\_lane}}~laneidx \\ &&|& \def\mathdef3714#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3714{i64x2.replace\_lane}~~laneidx{:}\href{../text/values.html#text-int}{\def\mathdef3293#1{{\mathtt{u}#1}}\mathdef3293{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{replace\_lane}}~laneidx \\ &&|& \def\mathdef3715#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3715{f32x4.extract\_lane}~~laneidx{:}\href{../text/values.html#text-int}{\def\mathdef3293#1{{\mathtt{u}#1}}\mathdef3293{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extract\_lane}}~laneidx \\ &&|& \def\mathdef3716#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3716{f32x4.replace\_lane}~~laneidx{:}\href{../text/values.html#text-int}{\def\mathdef3293#1{{\mathtt{u}#1}}\mathdef3293{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{replace\_lane}}~laneidx \\ &&|& \def\mathdef3717#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3717{f64x2.extract\_lane}~~laneidx{:}\href{../text/values.html#text-int}{\def\mathdef3293#1{{\mathtt{u}#1}}\mathdef3293{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extract\_lane}}~laneidx \\ &&|& \def\mathdef3718#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3718{f64x2.replace\_lane}~~laneidx{:}\href{../text/values.html#text-int}{\def\mathdef3293#1{{\mathtt{u}#1}}\mathdef3293{\mathtt{8}}} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{replace\_lane}}~laneidx \\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef3269#1{{}}\mathdef3269{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3719#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3719{i8x16.eq} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{eq}}\\ &&|& \def\mathdef3720#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3720{i8x16.ne} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ne}}\\ &&|& \def\mathdef3721#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3721{i8x16.lt\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{lt}}\mathsf{\_s}\\ &&|& \def\mathdef3722#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3722{i8x16.lt\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{lt}}\mathsf{\_u}\\ &&|& \def\mathdef3723#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3723{i8x16.gt\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{gt}}\mathsf{\_s}\\ &&|& \def\mathdef3724#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3724{i8x16.gt\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{gt}}\mathsf{\_u}\\ &&|& \def\mathdef3725#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3725{i8x16.le\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{le}}\mathsf{\_s}\\ &&|& \def\mathdef3726#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3726{i8x16.le\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{le}}\mathsf{\_u}\\ &&|& \def\mathdef3727#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3727{i8x16.ge\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ge}}\mathsf{\_s}\\ &&|& \def\mathdef3728#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3728{i8x16.ge\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ge}}\mathsf{\_u}\\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef3269#1{{}}\mathdef3269{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3729#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3729{i16x8.eq} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{eq}}\\ &&|& \def\mathdef3730#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3730{i16x8.ne} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ne}}\\ &&|& \def\mathdef3731#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3731{i16x8.lt\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{lt}}\mathsf{\_s}\\ &&|& \def\mathdef3732#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3732{i16x8.lt\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{lt}}\mathsf{\_u}\\ &&|& \def\mathdef3733#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3733{i16x8.gt\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{gt}}\mathsf{\_s}\\ &&|& \def\mathdef3734#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3734{i16x8.gt\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{gt}}\mathsf{\_u}\\ &&|& \def\mathdef3735#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3735{i16x8.le\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{le}}\mathsf{\_s}\\ &&|& \def\mathdef3736#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3736{i16x8.le\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{le}}\mathsf{\_u}\\ &&|& \def\mathdef3737#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3737{i16x8.ge\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ge}}\mathsf{\_s}\\ &&|& \def\mathdef3738#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3738{i16x8.ge\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ge}}\mathsf{\_u}\\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef3269#1{{}}\mathdef3269{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3739#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3739{i32x4.eq} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{eq}}\\ &&|& \def\mathdef3740#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3740{i32x4.ne} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ne}}\\ &&|& \def\mathdef3741#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3741{i32x4.lt\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{lt}}\mathsf{\_s}\\ &&|& \def\mathdef3742#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3742{i32x4.lt\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{lt}}\mathsf{\_u}\\ &&|& \def\mathdef3743#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3743{i32x4.gt\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{gt}}\mathsf{\_s}\\ &&|& \def\mathdef3744#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3744{i32x4.gt\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{gt}}\mathsf{\_u}\\ &&|& \def\mathdef3745#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3745{i32x4.le\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{le}}\mathsf{\_s}\\ &&|& \def\mathdef3746#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3746{i32x4.le\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{le}}\mathsf{\_u}\\ &&|& \def\mathdef3747#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3747{i32x4.ge\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ge}}\mathsf{\_s}\\ &&|& \def\mathdef3748#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3748{i32x4.ge\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ge}}\mathsf{\_u}\\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef3269#1{{}}\mathdef3269{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3749#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3749{i64x2.eq} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{eq}}\\ &&|& \def\mathdef3750#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3750{i64x2.ne} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ne}}\\ &&|& \def\mathdef3751#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3751{i64x2.lt\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{lt}}\mathsf{\_s}\\ &&|& \def\mathdef3752#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3752{i64x2.gt\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{gt}}\mathsf{\_s}\\ &&|& \def\mathdef3753#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3753{i64x2.le\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{le}}\mathsf{\_s}\\ &&|& \def\mathdef3754#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3754{i64x2.ge\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ge}}\mathsf{\_s}\\ &&|& \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef3269#1{{}}\mathdef3269{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3755#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3755{f32x4.eq} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{eq}}\\ &&|& \def\mathdef3756#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3756{f32x4.ne} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ne}}\\ &&|& \def\mathdef3757#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3757{f32x4.lt} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{lt}}\\ &&|& \def\mathdef3758#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3758{f32x4.gt} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{gt}}\\ &&|& \def\mathdef3759#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3759{f32x4.le} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{le}}\\ &&|& \def\mathdef3760#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3760{f32x4.ge} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ge}}\\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef3269#1{{}}\mathdef3269{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3761#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3761{f64x2.eq} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{eq}}\\ &&|& \def\mathdef3762#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3762{f64x2.ne} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ne}}\\ &&|& \def\mathdef3763#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3763{f64x2.lt} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{lt}}\\ &&|& \def\mathdef3764#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3764{f64x2.gt} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{gt}}\\ &&|& \def\mathdef3765#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3765{f64x2.le} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{le}}\\ &&|& \def\mathdef3766#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3766{f64x2.ge} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ge}}\\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef3269#1{{}}\mathdef3269{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3767#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3767{v128.not} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{v128}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{not}}\\ &&|& \def\mathdef3768#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3768{v128.and} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{v128}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{and}}\\ &&|& \def\mathdef3769#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3769{v128.andnot} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{v128}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{andnot}}\\ &&|& \def\mathdef3770#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3770{v128.or} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{v128}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{or}}\\ &&|& \def\mathdef3771#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3771{v128.xor} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{v128}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{xor}}\\ &&|& \def\mathdef3772#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3772{v128.bitselect} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{v128}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{bitselect}}\\ &&|& \def\mathdef3773#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3773{v128.any\_true} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{v128}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{any\_true}} \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef3269#1{{}}\mathdef3269{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3774#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3774{i8x16.abs} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{abs}}\\ &&|& \def\mathdef3775#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3775{i8x16.neg} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{neg}}\\ &&|& \def\mathdef3776#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3776{i8x16.all\_true} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{all\_true}}\\ &&|& \def\mathdef3777#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3777{i8x16.bitmask} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{bitmask}}\\ &&|& \def\mathdef3778#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3778{i8x16.narrow\_i16x8\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{narrow}}\mathsf{\_i16x8\_s}\\ &&|& \def\mathdef3779#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3779{i8x16.narrow\_i16x8\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{narrow}}\mathsf{\_i16x8\_u}\\ &&|& \def\mathdef3780#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3780{i8x16.shl} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shl}}\\ &&|& \def\mathdef3781#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3781{i8x16.shr\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shr}}\mathsf{\_s}\\ &&|& \def\mathdef3782#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3782{i8x16.shr\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shr}}\mathsf{\_u}\\ &&|& \def\mathdef3783#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3783{i8x16.add} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add}}\\ &&|& \def\mathdef3784#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3784{i8x16.add\_sat\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add}}\mathsf{\_sat\_s}\\ &&|& \def\mathdef3785#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3785{i8x16.add\_sat\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add}}\mathsf{\_sat\_u}\\ &&|& \def\mathdef3786#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3786{i8x16.sub} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub}}\\ &&|& \def\mathdef3787#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3787{i8x16.sub\_sat\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub}}\mathsf{\_sat\_s}\\ &&|& \def\mathdef3788#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3788{i8x16.sub\_sat\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub}}\mathsf{\_sat\_u}\\ &&|& \def\mathdef3789#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3789{i8x16.min\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{min}}\mathsf{\_s}\\ &&|& \def\mathdef3790#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3790{i8x16.min\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{min}}\mathsf{\_u}\\ &&|& \def\mathdef3791#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3791{i8x16.max\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{max}}\mathsf{\_s}\\ &&|& \def\mathdef3792#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3792{i8x16.max\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{max}}\mathsf{\_u}\\ &&|& \def\mathdef3793#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3793{i8x16.avgr\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{avgr}}\mathsf{\_u}\\ &&|& \def\mathdef3794#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3794{i8x16.popcnt} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{popcnt}}\\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef3269#1{{}}\mathdef3269{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3795#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3795{i16x8.abs} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{abs}}\\ &&|& \def\mathdef3796#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3796{i16x8.neg} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{neg}}\\ &&|& \def\mathdef3797#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3797{i16x8.all\_true} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{all\_true}}\\ &&|& \def\mathdef3798#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3798{i16x8.bitmask} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{bitmask}}\\ &&|& \def\mathdef3799#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3799{i16x8.narrow\_i32x4\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{narrow}}\mathsf{\_i32x4\_s}\\ &&|& \def\mathdef3800#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3800{i16x8.narrow\_i32x4\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{narrow}}\mathsf{\_i32x4\_u}\\ &&|& \def\mathdef3801#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3801{i16x8.extend\_low\_i8x16\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}\mathsf{\_low\_i8x16\_s}\\ &&|& \def\mathdef3802#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3802{i16x8.extend\_high\_i8x16\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}\mathsf{\_high\_i8x16\_s}\\ &&|& \def\mathdef3803#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3803{i16x8.extend\_low\_i8x16\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}\mathsf{\_low\_i8x16\_u}\\ &&|& \def\mathdef3804#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3804{i16x8.extend\_high\_i8x16\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}\mathsf{\_high\_i8x16\_u}\\ &&|& \def\mathdef3805#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3805{i16x8.shl} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shl}}\\ &&|& \def\mathdef3806#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3806{i16x8.shr\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shr}}\mathsf{\_s}\\ &&|& \def\mathdef3807#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3807{i16x8.shr\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shr}}\mathsf{\_u}\\ &&|& \def\mathdef3808#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3808{i16x8.add} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add}}\\ &&|& \def\mathdef3809#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3809{i16x8.add\_sat\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add}}\mathsf{\_sat\_s}\\ &&|& \def\mathdef3810#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3810{i16x8.add\_sat\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add}}\mathsf{\_sat\_u}\\ &&|& \def\mathdef3811#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3811{i16x8.sub} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub}}\\ &&|& \def\mathdef3812#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3812{i16x8.sub\_sat\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub}}\mathsf{\_sat\_s}\\ &&|& \def\mathdef3813#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3813{i16x8.sub\_sat\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub}}\mathsf{\_sat\_u}\\ &&|& \def\mathdef3814#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3814{i16x8.mul} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{mul}}\\ &&|& \def\mathdef3815#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3815{i16x8.min\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{min}}\mathsf{\_s}\\ &&|& \def\mathdef3816#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3816{i16x8.min\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{min}}\mathsf{\_u}\\ &&|& \def\mathdef3817#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3817{i16x8.max\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{max}}\mathsf{\_s}\\ &&|& \def\mathdef3818#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3818{i16x8.max\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{max}}\mathsf{\_u}\\ &&|& \def\mathdef3819#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3819{i16x8.avgr\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{avgr}}\mathsf{\_u}\\ &&|& \def\mathdef3820#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3820{i16x8.q15mulr\_sat\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{q15mulr\_sat}}\mathsf{\_s}\\ &&|& \def\mathdef3821#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3821{i16x8.extmul\_low\_i8x16\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}\mathsf{\_low\_i8x16\_s}\\ &&|& \def\mathdef3822#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3822{i16x8.extmul\_high\_i8x16\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}\mathsf{\_high\_i8x16\_s}\\ &&|& \def\mathdef3823#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3823{i16x8.extmul\_low\_i8x16\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}\mathsf{\_low\_i8x16\_u}\\ &&|& \def\mathdef3824#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3824{i16x8.extmul\_high\_i8x16\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}\mathsf{\_high\_i8x16\_u}\\ &&|& \def\mathdef3825#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3825{i16x8.extadd\_pairwise\_i8x16\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extadd\_pairwise}}\mathsf{\_i8x16\_s}\\ &&|& \def\mathdef3826#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3826{i16x8.extadd\_pairwise\_i8x16\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extadd\_pairwise}}\mathsf{\_i8x16\_u}\\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef3269#1{{}}\mathdef3269{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3827#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3827{i32x4.abs} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{abs}}\\ &&|& \def\mathdef3828#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3828{i32x4.neg} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{neg}}\\ &&|& \def\mathdef3829#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3829{i32x4.all\_true} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{all\_true}}\\ &&|& \def\mathdef3830#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3830{i32x4.bitmask} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{bitmask}}\\ &&|& \def\mathdef3831#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3831{i32x4.extadd\_pairwise\_i16x8\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extadd\_pairwise}}\mathsf{\_i16x8\_s}\\ &&|& \def\mathdef3832#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3832{i32x4.extadd\_pairwise\_i16x8\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extadd\_pairwise}}\mathsf{\_i16x8\_u}\\ &&|& \def\mathdef3833#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3833{i32x4.extend\_low\_i16x8\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}\mathsf{\_low\_i16x8\_s}\\ &&|& \def\mathdef3834#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3834{i32x4.extend\_high\_i16x8\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}\mathsf{\_high\_i16x8\_s}\\ &&|& \def\mathdef3835#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3835{i32x4.extend\_low\_i16x8\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}\mathsf{\_low\_i16x8\_u}\\ &&|& \def\mathdef3836#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3836{i32x4.extend\_high\_i16x8\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}\mathsf{\_high\_i16x8\_u}\\ &&|& \def\mathdef3837#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3837{i32x4.shl} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shl}}\\ &&|& \def\mathdef3838#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3838{i32x4.shr\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shr}}\mathsf{\_s}\\ &&|& \def\mathdef3839#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3839{i32x4.shr\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shr}}\mathsf{\_u}\\ &&|& \def\mathdef3840#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3840{i32x4.add} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add}}\\ &&|& \def\mathdef3841#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3841{i32x4.sub} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub}}\\ &&|& \def\mathdef3842#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3842{i32x4.mul} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{mul}}\\ &&|& \def\mathdef3843#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3843{i32x4.min\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{min}}\mathsf{\_s}\\ &&|& \def\mathdef3844#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3844{i32x4.min\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{min}}\mathsf{\_u}\\ &&|& \def\mathdef3845#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3845{i32x4.max\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{max}}\mathsf{\_s}\\ &&|& \def\mathdef3846#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3846{i32x4.max\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{max}}\mathsf{\_u}\\ &&|& \def\mathdef3847#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3847{i32x4.dot\_i16x8\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{dot}}\mathsf{\_i16x8\_s}\\ &&|& \def\mathdef3848#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3848{i32x4.extmul\_low\_i16x8\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}\mathsf{\_low\_i16x8\_s}\\ &&|& \def\mathdef3849#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3849{i32x4.extmul\_high\_i16x8\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}\mathsf{\_high\_i16x8\_s}\\ &&|& \def\mathdef3850#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3850{i32x4.extmul\_low\_i16x8\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}\mathsf{\_low\_i16x8\_u}\\ &&|& \def\mathdef3851#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3851{i32x4.extmul\_high\_i16x8\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}\mathsf{\_high\_i16x8\_u}\\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef3269#1{{}}\mathdef3269{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3852#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3852{i64x2.abs} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{abs}}\\ &&|& \def\mathdef3853#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3853{i64x2.neg} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{neg}}\\ &&|& \def\mathdef3854#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3854{i64x2.all\_true} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{all\_true}}\\ &&|& \def\mathdef3855#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3855{i64x2.bitmask} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{bitmask}}\\ &&|& \def\mathdef3856#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3856{i64x2.extend\_low\_i32x4\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}\mathsf{\_low\_i32x4\_s} \\ &&|& \def\mathdef3857#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3857{i64x2.extend\_high\_i32x4\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}\mathsf{\_high\_i32x4\_s} \\ &&|& \def\mathdef3858#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3858{i64x2.extend\_low\_i32x4\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}\mathsf{\_low\_i32x4\_u} \\ &&|& \def\mathdef3859#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3859{i64x2.extend\_high\_i32x4\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extend}}\mathsf{\_high\_i32x4\_u} \\ &&|& \def\mathdef3860#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3860{i64x2.shl} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shl}}\\ &&|& \def\mathdef3861#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3861{i64x2.shr\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shr}}\mathsf{\_s}\\ &&|& \def\mathdef3862#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3862{i64x2.shr\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{shr}}\mathsf{\_u}\\ &&|& \def\mathdef3863#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3863{i64x2.add} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add}}\\ &&|& \def\mathdef3864#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3864{i64x2.sub} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub}}\\ &&|& \def\mathdef3865#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3865{i64x2.mul} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{mul}}\\ &&|& \def\mathdef3866#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3866{i64x2.extmul\_low\_i32x4\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}\mathsf{\_low\_i32x4\_s}\\ &&|& \def\mathdef3867#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3867{i64x2.extmul\_high\_i32x4\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}\mathsf{\_high\_i32x4\_s}\\ &&|& \def\mathdef3868#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3868{i64x2.extmul\_low\_i32x4\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}\mathsf{\_low\_i32x4\_u}\\ &&|& \def\mathdef3869#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3869{i64x2.extmul\_high\_i32x4\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{extmul}}\mathsf{\_high\_i32x4\_u}\\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef3269#1{{}}\mathdef3269{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3870#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3870{f32x4.abs} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{abs}}\\ &&|& \def\mathdef3871#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3871{f32x4.neg} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{neg}}\\ &&|& \def\mathdef3872#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3872{f32x4.sqrt} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sqrt}}\\ &&|& \def\mathdef3873#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3873{f32x4.ceil} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ceil}}\\ &&|& \def\mathdef3874#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3874{f32x4.floor} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{floor}}\\ &&|& \def\mathdef3875#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3875{f32x4.trunc} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{trunc}}\\ &&|& \def\mathdef3876#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3876{f32x4.nearest} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{nearest}}\\ &&|& \def\mathdef3877#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3877{f32x4.add} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add}}\\ &&|& \def\mathdef3878#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3878{f32x4.sub} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub}}\\ &&|& \def\mathdef3879#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3879{f32x4.mul} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{mul}}\\ &&|& \def\mathdef3880#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3880{f32x4.div} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{div}}\\ &&|& \def\mathdef3881#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3881{f32x4.min} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{min}}\\ &&|& \def\mathdef3882#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3882{f32x4.max} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{max}}\\ &&|& \def\mathdef3883#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3883{f32x4.pmin} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{pmin}}\\ &&|& \def\mathdef3884#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3884{f32x4.pmax} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{pmax}}\\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef3269#1{{}}\mathdef3269{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3885#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3885{f64x2.abs} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{abs}}\\ &&|& \def\mathdef3886#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3886{f64x2.neg} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{neg}}\\ &&|& \def\mathdef3887#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3887{f64x2.sqrt} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sqrt}}\\ &&|& \def\mathdef3888#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3888{f64x2.ceil} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{ceil}}\\ &&|& \def\mathdef3889#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3889{f64x2.floor} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{floor}}\\ &&|& \def\mathdef3890#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3890{f64x2.trunc} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{trunc}}\\ &&|& \def\mathdef3891#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3891{f64x2.nearest} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{nearest}}\\ &&|& \def\mathdef3892#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3892{f64x2.add} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{add}}\\ &&|& \def\mathdef3893#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3893{f64x2.sub} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{sub}}\\ &&|& \def\mathdef3894#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3894{f64x2.mul} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{mul}}\\ &&|& \def\mathdef3895#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3895{f64x2.div} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{div}}\\ &&|& \def\mathdef3896#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3896{f64x2.min} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{min}}\\ &&|& \def\mathdef3897#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3897{f64x2.max} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{max}}\\ &&|& \def\mathdef3898#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3898{f64x2.pmin} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{pmin}}\\ &&|& \def\mathdef3899#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3899{f64x2.pmax} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{pmax}}\\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef3269#1{{}}\mathdef3269{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3900#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3900{i32x4.trunc\_sat\_f32x4\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{trunc}}\mathsf{\_sat\_f32x4\_s}\\ &&|& \def\mathdef3901#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3901{i32x4.trunc\_sat\_f32x4\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{trunc}}\mathsf{\_sat\_f32x4\_u}\\ &&|& \def\mathdef3902#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3902{i32x4.trunc\_sat\_f64x2\_s\_zero} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{trunc}}\mathsf{\_sat\_f64x2\_s\_zero}\\ &&|& \def\mathdef3903#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3903{i32x4.trunc\_sat\_f64x2\_u\_zero} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{trunc}}\mathsf{\_sat\_f64x2\_u\_zero}\\ &&|& \def\mathdef3904#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3904{f32x4.convert\_i32x4\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}\mathsf{\_i32x4\_s}\\ &&|& \def\mathdef3905#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3905{f32x4.convert\_i32x4\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}\mathsf{\_i32x4\_u}\\ &&|& \def\mathdef3906#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3906{f64x2.convert\_low\_i32x4\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{convert}}\mathsf{\_low\_i32x4\_s}\\ &&|& \def\mathdef3907#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3907{f64x2.convert\_low\_i32x4\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{convert}}\mathsf{\_low\_i32x4\_u}\\ &&|& \def\mathdef3908#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3908{f32x4.demote\_f64x2\_zero} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{demote}}\mathsf{\_f64x2\_zero}\\ &&|& \def\mathdef3909#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3909{f64x2.promote\_low\_f32x4} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{promote}}\mathsf{\_low\_f32x4}\\ \end{array}\end{split}\]
\[\begin{split}\begin{array}{llclll} \phantom{\def\mathdef3269#1{{}}\mathdef3269{instruction}} & \phantom{\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallyreallyreallylonginstructionnames} \\[-2ex] &&|& \def\mathdef3910#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3910{i16x8.relaxed\_swizzle} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_swizzle}} \\ &&|& \def\mathdef3911#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3911{i32x4.relaxed\_trunc\_f32x4\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_trunc}}\mathsf{\_f32x4\_s} \\ &&|& \def\mathdef3912#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3912{i32x4.relaxed\_trunc\_f32x4\_u} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_trunc}}\mathsf{\_f32x4\_u} \\ &&|& \def\mathdef3913#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3913{i32x4.relaxed\_trunc\_f32x4\_s\_zero} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_trunc}}\mathsf{\_f32x4\_s\_zero} \\ &&|& \def\mathdef3914#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3914{i32x4.relaxed\_trunc\_f32x4\_u\_zero} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_trunc}}\mathsf{\_f32x4\_u\_zero} \\ &&|& \def\mathdef3915#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3915{f32x4.relaxed\_madd} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_madd}} \\ &&|& \def\mathdef3916#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3916{f32x4.relaxed\_nmadd} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_nmadd}} \\ &&|& \def\mathdef3917#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3917{f64x2.relaxed\_madd} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_madd}} \\ &&|& \def\mathdef3918#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3918{f64x2.relaxed\_nmadd} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_nmadd}} \\ &&|& \def\mathdef3919#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3919{i8x16.relaxed\_laneselect} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i8x16}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_laneselect}} \\ &&|& \def\mathdef3920#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3920{i16x8.relaxed\_laneselect} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_laneselect}} \\ &&|& \def\mathdef3921#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3921{i32x4.relaxed\_laneselect} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_laneselect}} \\ &&|& \def\mathdef3922#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3922{i64x2.relaxed\_laneselect} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_laneselect}} \\ &&|& \def\mathdef3923#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3923{f32x4.relaxed\_min} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_min}} \\ &&|& \def\mathdef3924#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3924{f32x4.relaxed\_max} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f32x4}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_max}} \\ &&|& \def\mathdef3925#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3925{f64x2.relaxed\_min} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_min}} \\ &&|& \def\mathdef3926#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3926{f64x2.relaxed\_max} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{f64x2}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_max}} \\ &&|& \def\mathdef3927#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3927{i16x8.relaxed\_q15mulr\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_q15mulr\_s}} \\ &&|& \def\mathdef3928#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3928{i16x8.relaxed\_dot\_i8x16\_i7x16\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_dot}}\mathsf{\_i8x16\_i7x16\_s} \\ &&|& \def\mathdef3929#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3929{i16x8.relaxed\_dot\_i8x16\_i7x16\_add\_s} &\Rightarrow& \href{../syntax/types.html#syntax-valtype}{\mathsf{i16x8}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{relaxed\_dot}}\mathsf{\_i8x16\_i7x16\_add\_s} \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\mathdef3930#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3930{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\mathdef3931#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3931{then}\) and \(\def\mathdef3932#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3932{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\mathdef3269#1{{}}\mathdef3269{instruction} & \def\mathdef3933#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3933{(}~\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}}~~\href{../text/instructions.html#text-foldedinstr}{\mathtt{foldedinstr}}^\ast~\def\mathdef3934#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3934{)} &\equiv\quad \href{../text/instructions.html#text-foldedinstr}{\mathtt{foldedinstr}}^\ast~~\href{../text/instructions.html#text-plaininstr}{\mathtt{plaininstr}} \\ & \def\mathdef3935#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3935{(}~\def\mathdef3936#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3936{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\mathdef3937#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3937{)} &\equiv\quad \def\mathdef3938#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3938{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\mathdef3939#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3939{end} \\ & \def\mathdef3940#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3940{(}~\def\mathdef3941#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3941{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\mathdef3942#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3942{)} &\equiv\quad \def\mathdef3943#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3943{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\mathdef3944#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3944{end} \\ & \def\mathdef3945#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3945{(}~\def\mathdef3946#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3946{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\mathdef3947#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3947{(}~\def\mathdef3948#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3948{then}~~\href{../text/instructions.html#text-instr}{\mathtt{instr}}_1^\ast~\def\mathdef3949#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3949{)}~~(\def\mathdef3950#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3950{(}~\def\mathdef3951#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3951{else}~~\href{../text/instructions.html#text-instr}{\mathtt{instr}}_2^\ast~\def\mathdef3952#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3952{)})^?~~\def\mathdef3953#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3953{)} \quad\equiv \\ &\qquad \href{../text/instructions.html#text-foldedinstr}{\mathtt{foldedinstr}}^\ast~~\def\mathdef3954#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3954{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\mathdef3955#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3955{else}~~(\href{../text/instructions.html#text-instr}{\mathtt{instr}}_2^\ast)^?~\def\mathdef3956#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3956{end} \\ & \def\mathdef3957#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3957{(}~\def\mathdef3958#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3958{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\mathdef3959#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3959{)} \quad\equiv \\ &\qquad \def\mathdef3960#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3960{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\mathdef3961#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3961{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\mathdef3962#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3962{end}\) keyword is included, since they only occur in bracketed positions.

\[\begin{split}\begin{array}{llclll} \def\mathdef3269#1{{}}\mathdef3269{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}\]