diff --git a/core/_download/WebAssembly.pdf b/core/_download/WebAssembly.pdf index 391fb57f89..b17100d523 100644 Binary files a/core/_download/WebAssembly.pdf and b/core/_download/WebAssembly.pdf differ diff --git a/core/appendix/index-instructions.html b/core/appendix/index-instructions.html index f650889cd9..b804053361 100644 --- a/core/appendix/index-instructions.html +++ b/core/appendix/index-instructions.html @@ -333,140 +333,140 @@
\(\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef316#1{\mathtt{0x#1}}\mathdef316{28}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} [\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}]\)
\(\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef317#1{\mathtt{0x#1}}\mathdef317{29}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} [\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}]\)
\(\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef318#1{\mathtt{0x#1}}\mathdef318{2A}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} [\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}]\)
\(\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef319#1{\mathtt{0x#1}}\mathdef319{2B}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} [\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}]\)
\(\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{8\_s}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef320#1{\mathtt{0x#1}}\mathdef320{2C}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} [\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}]\)
\(\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{8\_u}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef321#1{\mathtt{0x#1}}\mathdef321{2D}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} [\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}]\)
\(\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{16\_s}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef322#1{\mathtt{0x#1}}\mathdef322{2E}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} [\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}]\)
\(\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{16\_u}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef323#1{\mathtt{0x#1}}\mathdef323{2F}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} [\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}]\)
\(\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{8\_s}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef324#1{\mathtt{0x#1}}\mathdef324{30}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} [\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}]\)
\(\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{8\_u}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef325#1{\mathtt{0x#1}}\mathdef325{31}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} [\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}]\)
\(\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{16\_s}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef326#1{\mathtt{0x#1}}\mathdef326{32}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} [\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}]\)
\(\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{16\_u}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef327#1{\mathtt{0x#1}}\mathdef327{33}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} [\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}]\)
\(\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{32\_s}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef328#1{\mathtt{0x#1}}\mathdef328{34}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} [\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}]\)
\(\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{32\_u}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef329#1{\mathtt{0x#1}}\mathdef329{35}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} [\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}]\)
\(\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef330#1{\mathtt{0x#1}}\mathdef330{36}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} []\)
\(\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef331#1{\mathtt{0x#1}}\mathdef331{37}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} []\)
\(\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef332#1{\mathtt{0x#1}}\mathdef332{38}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} []\)
\(\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef333#1{\mathtt{0x#1}}\mathdef333{39}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~\href{../syntax/types.html#syntax-numtype}{\mathsf{f\scriptstyle64}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} []\)
\(\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}\mathsf{8}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef334#1{\mathtt{0x#1}}\mathdef334{3A}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} []\)
\(\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}\mathsf{16}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef335#1{\mathtt{0x#1}}\mathdef335{3B}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} []\)
\(\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}\mathsf{8}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef336#1{\mathtt{0x#1}}\mathdef336{3C}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} []\)
\(\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}\mathsf{16}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef337#1{\mathtt{0x#1}}\mathdef337{3D}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} []\)
\(\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}\mathsf{32}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef338#1{\mathtt{0x#1}}\mathdef338{3E}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle64}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} []\)
\(\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{memory.size}}~x\)
\(\def\mathdef339#1{\mathtt{0x#1}}\mathdef339{3F}\)
\(\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef629#1{\mathtt{0x#1}}\mathdef629{FD}~~\def\mathdef630#1{\mathtt{0x#1}}\mathdef630{00}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} [\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}]\)
\(\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{8x8\_s}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef631#1{\mathtt{0x#1}}\mathdef631{FD}~~\def\mathdef632#1{\mathtt{0x#1}}\mathdef632{01}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} [\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}]\)
\(\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{8x8\_u}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef633#1{\mathtt{0x#1}}\mathdef633{FD}~~\def\mathdef634#1{\mathtt{0x#1}}\mathdef634{02}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} [\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}]\)
\(\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{16x4\_s}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef635#1{\mathtt{0x#1}}\mathdef635{FD}~~\def\mathdef636#1{\mathtt{0x#1}}\mathdef636{03}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} [\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}]\)
\(\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{16x4\_u}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef637#1{\mathtt{0x#1}}\mathdef637{FD}~~\def\mathdef638#1{\mathtt{0x#1}}\mathdef638{04}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} [\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}]\)
\(\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{32x2\_s}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef639#1{\mathtt{0x#1}}\mathdef639{FD}~~\def\mathdef640#1{\mathtt{0x#1}}\mathdef640{05}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} [\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}]\)
\(\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{32x2\_u}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef641#1{\mathtt{0x#1}}\mathdef641{FD}~~\def\mathdef642#1{\mathtt{0x#1}}\mathdef642{06}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} [\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}]\)
\(\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{8\_splat}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef643#1{\mathtt{0x#1}}\mathdef643{FD}~~\def\mathdef644#1{\mathtt{0x#1}}\mathdef644{07}\)
\(\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}~x~\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}\)
\(\def\mathdef651#1{\mathtt{0x#1}}\mathdef651{FD}~~\def\mathdef652#1{\mathtt{0x#1}}\mathdef652{0B}\)
\([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} []\)
\(\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-vec}{\mathsf{const}}~\href{../syntax/values.html#syntax-int}{\mathit{i\scriptstyle\kern-0.1em128}}\)
\(\def\mathdef653#1{\mathtt{0x#1}}\mathdef653{FD}~~\def\mathdef654#1{\mathtt{0x#1}}\mathdef654{0C}\)
Let \(z\) be the current state.
Assert: Due to validation, a value of value type \(\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}\) is on the top of the stack.
Assert: due to validation, \(F.\href{../exec/runtime.html#syntax-frame}{\mathsf{module}}.\href{../exec/runtime.html#syntax-moduleinst}{\mathsf{memaddrs}}[x]\) exists.
Assert: due to validation, \(F.\href{../exec/runtime.html#syntax-frame}{\mathsf{module}}.\href{../exec/runtime.html#syntax-moduleinst}{\mathsf{memaddrs}}[x]\) exists.
Let \(a\) be the memory address \(F.\href{../exec/runtime.html#syntax-frame}{\mathsf{module}}.\href{../exec/runtime.html#syntax-moduleinst}{\mathsf{memaddrs}}[x]\).
Assert: due to validation, \(S.\href{../exec/runtime.html#syntax-store}{\mathsf{mems}}[a]\) exists.
Assert: due to validation, \(S.\href{../exec/runtime.html#syntax-store}{\mathsf{mems}}[a]\) exists.
Let \(\mathit{mem}\) be the memory instance \(S.\href{../exec/runtime.html#syntax-store}{\mathsf{mems}}[a]\).
Assert: due to validation, a value of value type \(\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}\) is on the top of the stack.
Assert: due to validation, a value of value type \(\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}\) is on the top of the stack.
Pop the value \(\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{const}}~i\) from the stack.
Let \(\mathit{ea}\) be the integer \(i + \href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{offset}}\).
If \(N\) is not part of the instruction, then:
@@ -3287,18 +3287,18 @@Todo
(*) Rule and prose both not spliced.
Assert: due to validation, \(F.\href{../exec/runtime.html#syntax-frame}{\mathsf{module}}.\href{../exec/runtime.html#syntax-moduleinst}{\mathsf{memaddrs}}[x]\) exists.
Assert: due to validation, \(F.\href{../exec/runtime.html#syntax-frame}{\mathsf{module}}.\href{../exec/runtime.html#syntax-moduleinst}{\mathsf{memaddrs}}[x]\) exists.
Let \(a\) be the memory address \(F.\href{../exec/runtime.html#syntax-frame}{\mathsf{module}}.\href{../exec/runtime.html#syntax-moduleinst}{\mathsf{memaddrs}}[x]\).
Assert: due to validation, \(S.\href{../exec/runtime.html#syntax-store}{\mathsf{mems}}[a]\) exists.
Assert: due to validation, \(S.\href{../exec/runtime.html#syntax-store}{\mathsf{mems}}[a]\) exists.
Let \(\mathit{mem}\) be the memory instance \(S.\href{../exec/runtime.html#syntax-store}{\mathsf{mems}}[a]\).
Assert: due to validation, a value of value type \(\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}\) is on the top of the stack.
Assert: due to validation, a value of value type \(\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}\) is on the top of the stack.
Pop the value \(\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{const}}~i\) from the stack.
Let \(\mathit{ea}\) be the integer \(i + \href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{offset}}\).
If \(\mathit{ea} + M \cdot N /8\) is larger than the length of \(\mathit{mem}.\href{../exec/runtime.html#syntax-meminst}{\mathsf{data}}\), then:
@@ -3487,7 +3487,7 @@Let \(z\) be the current state.
Assert: Due to validation, a value of value type \({\mathit{numty}}_{\mathit{u{\kern-0.1em\scriptstyle 0}}}\) is on the top of the stack.
Assert: due to validation, \(F.\href{../exec/runtime.html#syntax-frame}{\mathsf{module}}.\href{../exec/runtime.html#syntax-moduleinst}{\mathsf{memaddrs}}[x]\) exists.
Let \(a\) be the memory address \(F.\href{../exec/runtime.html#syntax-frame}{\mathsf{module}}.\href{../exec/runtime.html#syntax-moduleinst}{\mathsf{memaddrs}}[x]\).
Assert: due to validation, \(S.\href{../exec/runtime.html#syntax-store}{\mathsf{mems}}[a]\) exists.
Assert: due to validation, \(S.\href{../exec/runtime.html#syntax-store}{\mathsf{mems}}[a]\) exists.
Let \(\mathit{mem}\) be the memory instance \(S.\href{../exec/runtime.html#syntax-store}{\mathsf{mems}}[a]\).
Assert: due to validation, a value of value type \(\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}\) is on the top of the stack.
Pop the value \(\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{const}}~c\) from the stack.
The memory \(C.\href{../valid/conventions.html#context}{\mathsf{mems}}[x]\) must be defined in the context.
The alignment \(2^{\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{align}}}\) must not be larger than the bit width of \(t\) divided by \(8\).
The memory \(C.\href{../valid/conventions.html#context}{\mathsf{mems}}[x]\) must be defined in the context.
The alignment \(2^{\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{align}}}\) must not be larger than \(N/8\).
Then the instruction is valid with type \([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} [t]\).
The memory \(C.\href{../valid/conventions.html#context}{\mathsf{mems}}[x]\) must be defined in the context.
The alignment \(2^{\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{align}}}\) must not be larger than the bit width of \(t\) divided by \(8\).
The memory \(C.\href{../valid/conventions.html#context}{\mathsf{mems}}[x]\) must be defined in the context.
The alignment \(2^{\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{align}}}\) must not be larger than \(N/8\).
Then the instruction is valid with type \([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~t] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} []\).
The memory \(C.\href{../valid/conventions.html#context}{\mathsf{mems}}[x]\) must be defined in the context.
The alignment \(2^{\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{align}}}\) must not be larger than the bit width of \(t\) divided by \(8\).
Then the instruction is valid with type \([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} [t]\).
The memory \(C.\href{../valid/conventions.html#context}{\mathsf{mems}}[x]\) must be defined in the context.
The alignment \(2^{\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{align}}}\) must not be larger than \(N/8 \cdot M\).
Then the instruction is valid with type \([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} [\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}]\).
Then the instruction is valid with type \([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} [\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}]\).
Then the instruction is valid with type \([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} [\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}]\).
Then the instruction is valid with type \([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} [\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}]\).
The memory \(C.\href{../valid/conventions.html#context}{\mathsf{mems}}[x]\) must be defined in the context.
The alignment \(2^{\href{../syntax/instructions.html#syntax-memarg}{\mathit{memarg}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{align}}}\) must not be larger than the bit width of \(t\) divided by \(8\).
Then the instruction is valid with type \([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~t] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} []\).
Then the instruction is valid with type \([\href{../syntax/types.html#syntax-numtype}{\mathsf{i\scriptstyle32}}~\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}] \mathrel{\href{../valid/conventions.html#syntax-instrtype}{\rightarrow}} [\href{../syntax/types.html#syntax-vectype}{\mathsf{v\scriptstyle128}}]\).
Note
The \(\mathsf{return}\) instruction is stack-polymorphic.
-\({\mathit{{\scriptstyle C}}}{.}\mathsf{return}\) is absent (set to \(\epsilon\)) when validating an expression that is not a function body. +
\({\mathit{{\scriptstyle C}}}{.}\href{../valid/conventions.html#context}{\mathsf{return}}\) is absent (set to \(\epsilon\)) when validating an expression that is not a function body. This differs from it being set to the empty result type \((\epsilon)\), which is the case for functions not returning anything.