diff --git a/document/core/util/macros.def b/document/core/util/macros.def index 520bbbffb1..b811ad95d9 100644 --- a/document/core/util/macros.def +++ b/document/core/util/macros.def @@ -136,33 +136,38 @@ .. |fX#1| mathdef:: {\X{f#1}} .. |vX#1| mathdef:: {\X{v#1}} -.. |uN| mathdef:: \xref{syntax/values}{syntax-int}{\X{u}N} -.. |uM| mathdef:: \xref{syntax/values}{syntax-int}{\X{u}M} -.. |u1| mathdef:: \xref{syntax/values}{syntax-int}{\X{u1}} -.. |u8| mathdef:: \xref{syntax/values}{syntax-int}{\X{u8}} -.. |u16| mathdef:: \xref{syntax/values}{syntax-int}{\X{u16}} -.. |u31| mathdef:: \xref{syntax/values}{syntax-int}{\X{u31}} -.. |u32| mathdef:: \xref{syntax/values}{syntax-int}{\X{u32}} -.. |u64| mathdef:: \xref{syntax/values}{syntax-int}{\X{u64}} - -.. |sN| mathdef:: \xref{syntax/values}{syntax-int}{\X{s}N} -.. |s8| mathdef:: \xref{syntax/values}{syntax-int}{\X{s8}} -.. |s16| mathdef:: \xref{syntax/values}{syntax-int}{\X{s16}} -.. |s32| mathdef:: \xref{syntax/values}{syntax-int}{\X{s32}} -.. |s64| mathdef:: \xref{syntax/values}{syntax-int}{\X{s64}} - -.. |iM| mathdef:: \xref{syntax/values}{syntax-int}{\X{i}M} -.. |iN| mathdef:: \xref{syntax/values}{syntax-int}{\X{i}N} -.. |i8| mathdef:: \xref{syntax/values}{syntax-int}{\X{i8}} -.. |i16| mathdef:: \xref{syntax/values}{syntax-int}{\X{i16}} -.. |i32| mathdef:: \xref{syntax/values}{syntax-int}{\X{i32}} -.. |i64| mathdef:: \xref{syntax/values}{syntax-int}{\X{i64}} -.. |i128| mathdef:: \xref{syntax/values}{syntax-int}{\X{i128}} - -.. |fN| mathdef:: \xref{syntax/values}{syntax-float}{\X{f}N} -.. |fNmag| mathdef:: \xref{syntax/values}{syntax-float}{\X{f}\X{Nmag}} -.. |f32| mathdef:: \xref{syntax/values}{syntax-float}{\X{f32}} -.. |f64| mathdef:: \xref{syntax/values}{syntax-float}{\X{f64}} +.. |uNN| mathdef:: \xref{syntax/values}{syntax-int}{\X{u}} +.. |uN| mathdef:: \xref{syntax/values}{syntax-int}{\X{u}\scriptstyle N} +.. |u1| mathdef:: \xref{syntax/values}{syntax-int}{\X{u\scriptstyle1}} +.. |u8| mathdef:: \xref{syntax/values}{syntax-int}{\X{u\scriptstyle8}} +.. |u16| mathdef:: \xref{syntax/values}{syntax-int}{\X{u\scriptstyle16}} +.. |u31| mathdef:: \xref{syntax/values}{syntax-int}{\X{u\scriptstyle31}} +.. |u32| mathdef:: \xref{syntax/values}{syntax-int}{\X{u\scriptstyle32}} +.. |u64| mathdef:: \xref{syntax/values}{syntax-int}{\X{u\scriptstyle64}} + +.. |sNN| mathdef:: \xref{syntax/values}{syntax-int}{\X{s}} +.. |sN| mathdef:: \xref{syntax/values}{syntax-int}{\X{s}\scriptstyle N} +.. |s8| mathdef:: \xref{syntax/values}{syntax-int}{\X{s\scriptstyle8}} +.. |s16| mathdef:: \xref{syntax/values}{syntax-int}{\X{s\scriptstyle16}} +.. |s32| mathdef:: \xref{syntax/values}{syntax-int}{\X{s\scriptstyle32}} +.. |s64| mathdef:: \xref{syntax/values}{syntax-int}{\X{s\scriptstyle64}} + +.. |iNN| mathdef:: \xref{syntax/values}{syntax-int}{\X{i}} +.. |iM| mathdef:: \xref{syntax/values}{syntax-int}{\X{i}\scriptstyle M} +.. |iN| mathdef:: \xref{syntax/values}{syntax-int}{\X{i}\scriptstyle N} +.. |i8| mathdef:: \xref{syntax/values}{syntax-int}{\X{i\scriptstyle8}} +.. |i16| mathdef:: \xref{syntax/values}{syntax-int}{\X{i\scriptstyle16}} +.. |i32| mathdef:: \xref{syntax/values}{syntax-int}{\X{i\scriptstyle32}} +.. |i64| mathdef:: \xref{syntax/values}{syntax-int}{\X{i\scriptstyle64}} +.. |i128| mathdef:: \xref{syntax/values}{syntax-int}{\X{i\scriptstyle128}} + +.. |fNN| mathdef:: \xref{syntax/values}{syntax-float}{\X{f}} +.. |fN| mathdef:: \xref{syntax/values}{syntax-float}{\X{f}\scriptstyle N} +.. |fNmag| mathdef:: \xref{syntax/values}{syntax-float}{\X{f}\scriptstyle N\X{mag}} +.. |f32| mathdef:: \xref{syntax/values}{syntax-float}{\X{f\scriptstyle32}} +.. |f64| mathdef:: \xref{syntax/values}{syntax-float}{\X{f\scriptstyle64}} + +.. |vNN| mathdef:: \xref{syntax/values}{syntax-vec}{\X{v}} .. |name| mathdef:: \xref{syntax/values}{syntax-name}{\X{name}} .. |char| mathdef:: \xref{syntax/values}{syntax-name}{\X{char}} @@ -183,20 +188,20 @@ .. |BOTH| mathdef:: \xref{valid/conventions}{syntax-heaptype-ext}{\K{bot}} .. |BOT| mathdef:: \xref{valid/conventions}{syntax-valtype-ext}{\K{bot}} -.. |I8| mathdef:: \xref{syntax/types}{syntax-storagetype}{\K{i8}} -.. |I16| mathdef:: \xref{syntax/types}{syntax-storagetype}{\K{i16}} -.. |I32| mathdef:: \xref{syntax/types}{syntax-numtype}{\K{i32}} -.. |I64| mathdef:: \xref{syntax/types}{syntax-numtype}{\K{i64}} -.. |F32| mathdef:: \xref{syntax/types}{syntax-numtype}{\K{f32}} -.. |F64| mathdef:: \xref{syntax/types}{syntax-numtype}{\K{f64}} -.. |V128| mathdef:: \xref{syntax/types}{syntax-vectype}{\K{v128}} -.. |IN| mathdef:: \xref{syntax/types}{syntax-numtype}{\K{i}N} -.. |FN| mathdef:: \xref{syntax/types}{syntax-numtype}{\K{f}N} -.. |VN| mathdef:: \xref{syntax/types}{syntax-vectype}{\K{v}N} +.. |I8| mathdef:: \xref{syntax/types}{syntax-storagetype}{\K{i\scriptstyle8}} +.. |I16| mathdef:: \xref{syntax/types}{syntax-storagetype}{\K{i\scriptstyle16}} +.. |I32| mathdef:: \xref{syntax/types}{syntax-numtype}{\K{i\scriptstyle32}} +.. |I64| mathdef:: \xref{syntax/types}{syntax-numtype}{\K{i\scriptstyle64}} +.. |F32| mathdef:: \xref{syntax/types}{syntax-numtype}{\K{f\scriptstyle32}} +.. |F64| mathdef:: \xref{syntax/types}{syntax-numtype}{\K{f\scriptstyle64}} +.. |V128| mathdef:: \xref{syntax/types}{syntax-vectype}{\K{v\scriptstyle128}} +.. |IN| mathdef:: \xref{syntax/types}{syntax-numtype}{\K{i}\scriptstyle N} +.. |FN| mathdef:: \xref{syntax/types}{syntax-numtype}{\K{f}\scriptstyle N} +.. |VN| mathdef:: \xref{syntax/types}{syntax-vectype}{\K{v}\scriptstyle N} .. |ANYREF| mathdef:: \xref{syntax/types}{syntax-reftype}{\K{anyref}} .. |EQREF| mathdef:: \xref{syntax/types}{syntax-reftype}{\K{eqref}} -.. |I31REF| mathdef:: \xref{syntax/types}{syntax-reftype}{\K{i31ref}} +.. |I31REF| mathdef:: \xref{syntax/types}{syntax-reftype}{\K{i{\scriptstyle31}ref}} .. |STRUCTREF| mathdef:: \xref{syntax/types}{syntax-reftype}{\K{structref}} .. |ARRAYREF| mathdef:: \xref{syntax/types}{syntax-reftype}{\K{arrayref}} .. |FUNCREF| mathdef:: \xref{syntax/types}{syntax-reftype}{\K{funcref}} @@ -209,7 +214,7 @@ .. |ANY| mathdef:: \xref{syntax/types}{syntax-heaptype}{\K{any}} .. |EQT| mathdef:: \xref{syntax/types}{syntax-heaptype}{\K{eq}} -.. |I31| mathdef:: \xref{syntax/types}{syntax-heaptype}{\K{i31}} +.. |I31| mathdef:: \xref{syntax/types}{syntax-heaptype}{\K{i\scriptstyle31}} .. |STRUCT| mathdef:: \xref{syntax/types}{syntax-heaptype}{\K{struct}} .. |ARRAY| mathdef:: \xref{syntax/types}{syntax-heaptype}{\K{array}} .. |FUNCT| mathdef:: \xref{syntax/types}{syntax-heaptype}{\K{func}} @@ -218,12 +223,12 @@ .. |NOFUNC| mathdef:: \xref{syntax/types}{syntax-heaptype}{\K{nofunc}} .. |NOEXTERN| mathdef:: \xref{syntax/types}{syntax-heaptype}{\K{noextern}} -.. |I8X16| mathdef:: \xref{syntax/instructions}{syntax-shape}{\K{i8x16}} -.. |I16X8| mathdef:: \xref{syntax/instructions}{syntax-shape}{\K{i16x8}} -.. |I32X4| mathdef:: \xref{syntax/instructions}{syntax-shape}{\K{i32x4}} -.. |I64X2| mathdef:: \xref{syntax/instructions}{syntax-shape}{\K{i64x2}} -.. |F32X4| mathdef:: \xref{syntax/instructions}{syntax-shape}{\K{f32x4}} -.. |F64X2| mathdef:: \xref{syntax/instructions}{syntax-shape}{\K{f64x2}} +.. |I8X16| mathdef:: \xref{syntax/instructions}{syntax-shape}{\K{i{\scriptstyle8}x\scriptstyle16}} +.. |I16X8| mathdef:: \xref{syntax/instructions}{syntax-shape}{\K{i{\scriptstyle16}x\scriptstyle8}} +.. |I32X4| mathdef:: \xref{syntax/instructions}{syntax-shape}{\K{i{\scriptstyle32}x\scriptstyle4}} +.. |I64X2| mathdef:: \xref{syntax/instructions}{syntax-shape}{\K{i{\scriptstyle64}x\scriptstyle2}} +.. |F32X4| mathdef:: \xref{syntax/instructions}{syntax-shape}{\K{f{\scriptstyle32}x\scriptstyle4}} +.. |F64X2| mathdef:: \xref{syntax/instructions}{syntax-shape}{\K{f{\scriptstyle64}x\scriptstyle2}} .. |REC| mathdef:: \xref{syntax/types}{syntax-heaptype}{\K{rec}} @@ -440,8 +445,8 @@ .. Instructions, terminals -.. |S| mathdef:: \xref{syntax/instructions}{syntax-sx}{\K{S}} -.. |U| mathdef:: \xref{syntax/instructions}{syntax-sx}{\K{U}} +.. |S| mathdef:: \xref{syntax/instructions}{syntax-sx}{\K{s}} +.. |U| mathdef:: \xref{syntax/instructions}{syntax-sx}{\K{u}} .. |OFFSET| mathdef:: \xref{syntax/instructions}{syntax-instr-memory}{\K{offset}} .. |ALIGN| mathdef:: \xref{syntax/instructions}{syntax-instr-memory}{\K{align}} @@ -535,10 +540,10 @@ .. |ARRAYINITDATA| mathdef:: \xref{syntax/instructions}{syntax-instr-array}{\K{array.init\_data}} .. |ARRAYINITELEM| mathdef:: \xref{syntax/instructions}{syntax-instr-array}{\K{array.init\_elem}} -.. |REFI31| mathdef:: \xref{syntax/instructions}{syntax-instr-i31}{\K{ref.i31}} -.. |I31GET| mathdef:: \xref{syntax/instructions}{syntax-instr-i31}{\K{i31.get}} -.. |I31GETS| mathdef:: \xref{syntax/instructions}{syntax-instr-i31}{\K{i31.get\_s}} -.. |I31GETU| mathdef:: \xref{syntax/instructions}{syntax-instr-i31}{\K{i31.get\_u}} +.. |REFI31| mathdef:: \xref{syntax/instructions}{syntax-instr-i31}{\K{ref.i\scriptstyle31}} +.. |I31GET| mathdef:: \xref{syntax/instructions}{syntax-instr-i31}{\K{i{\scriptstyle31}.get}} +.. |I31GETS| mathdef:: \xref{syntax/instructions}{syntax-instr-i31}{\K{i{\scriptstyle31}.get\_s}} +.. |I31GETU| mathdef:: \xref{syntax/instructions}{syntax-instr-i31}{\K{i{\scriptstyle31}.get\_u}} .. |ANYCONVERTEXTERN| mathdef:: \xref{syntax/instructions}{syntax-instr-extern}{\K{any.convert\_extern}} .. |EXTERNCONVERTANY| mathdef:: \xref{syntax/instructions}{syntax-instr-extern}{\K{extern.convert\_any}} @@ -634,7 +639,7 @@ .. |VDOT| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{dot}} .. |VEXTMUL| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{extmul}} .. |VCONVERT| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{convert}} -.. |VQ15MULRSATS| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{q15mulr\_sat\_s}} +.. |VQ15MULRSATS| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{q{\scriptstyle15}mulr\_sat\_s}} .. |VEXTADDPAIRWISE| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{extadd\_pairwise}} .. |VDEMOTE| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{demote}} .. |VPROMOTE| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{promote}} @@ -734,24 +739,24 @@ .. |BiX#1| mathdef:: {\B{i}#1} .. |BfX#1| mathdef:: {\B{f}#1} -.. |BuN| mathdef:: \xref{binary/values}{binary-int}{\BuX{N}} +.. |BuN| mathdef:: \xref{binary/values}{binary-int}{\BuX{\scriptstyle N}} .. |Bu1| mathdef:: \xref{binary/values}{binary-int}{\BuX{\B{1}}} .. |Bu8| mathdef:: \xref{binary/values}{binary-int}{\BuX{\B{8}}} .. |Bu16| mathdef:: \xref{binary/values}{binary-int}{\BuX{\B{16}}} .. |Bu32| mathdef:: \xref{binary/values}{binary-int}{\BuX{\B{32}}} .. |Bu64| mathdef:: \xref{binary/values}{binary-int}{\BuX{\B{64}}} -.. |BsN| mathdef:: \xref{binary/values}{binary-int}{\BsX{N}} +.. |BsN| mathdef:: \xref{binary/values}{binary-int}{\BsX{\scriptstyle N}} .. |Bs7| mathdef:: \xref{binary/values}{binary-int}{\BsX{\B{7}}} .. |Bs32| mathdef:: \xref{binary/values}{binary-int}{\BsX{\B{32}}} .. |Bs33| mathdef:: \xref{binary/values}{binary-int}{\BsX{\B{33}}} .. |Bs64| mathdef:: \xref{binary/values}{binary-int}{\BsX{\B{64}}} -.. |BiN| mathdef:: \xref{binary/values}{binary-int}{\BiX{N}} +.. |BiN| mathdef:: \xref{binary/values}{binary-int}{\BiX{\scriptstyle N}} .. |Bi32| mathdef:: \xref{binary/values}{binary-int}{\BiX{\B{32}}} .. |Bi64| mathdef:: \xref{binary/values}{binary-int}{\BiX{\B{64}}} -.. |BfN| mathdef:: \xref{binary/values}{binary-float}{\BfX{N}} +.. |BfN| mathdef:: \xref{binary/values}{binary-float}{\BfX{\scriptstyle N}} .. |Bf32| mathdef:: \xref{binary/values}{binary-float}{\BfX{\B{32}}} .. |Bf64| mathdef:: \xref{binary/values}{binary-float}{\BfX{\B{64}}} @@ -760,7 +765,7 @@ .. Values, meta functions -.. |utf8| mathdef:: \xref{binary/values}{binary-utf8}{\F{utf8}} +.. |utf8| mathdef:: \xref{binary/values}{binary-utf8}{\F{utf\scriptstyle8}} .. Types, non-terminals diff --git a/spectec/doc/Language.md b/spectec/doc/Language.md index b3449ef0dd..f8cfd761fe 100644 --- a/spectec/doc/Language.md +++ b/spectec/doc/Language.md @@ -151,6 +151,7 @@ exp ::= "$" "(" arith ")" escape to arithmetic syntax hole hole (for syntax rewrites in hints) exp "#" exp token concatenation (for syntax rewrites in hints) + "##" exp remove possible parentheses (for syntax rewrites in hints) unop ::= notop | "+" | "-" binop ::= logop | "+" | "-" | "*" | "/" | "^" diff --git a/spectec/spec/wasm-3.0/1-syntax.watsup b/spectec/spec/wasm-3.0/1-syntax.watsup index f1ac23d1ed..86567e95d6 100644 --- a/spectec/spec/wasm-3.0/1-syntax.watsup +++ b/spectec/spec/wasm-3.0/1-syntax.watsup @@ -15,11 +15,11 @@ syntax list(syntax X) = X* -- if |X*| < $(2^32) syntax bit hint(desc "bit") = 0 | 1 syntax byte hint(desc "byte") = 0x00 | ... | 0xFF -syntax uN(N) hint(desc "unsigned integer") hint(show u#%) hint(macro "uN") = +syntax uN(N) hint(desc "unsigned integer") hint(show u#%) hint(macro "uNN") = 0 | ... | 2^N-1 -syntax sN(N) hint(desc "signed integer") hint(show s#%) hint(macro "sN") = +syntax sN(N) hint(desc "signed integer") hint(show s#%) hint(macro "sNN") = -2^(N-1) | ... | -1 | 0 | +1 | ... | 2^(N-1)-1 -syntax iN(N) hint(desc "integer") hint(show i#%) hint(macro "iN") = +syntax iN(N) hint(desc "integer") hint(show i#%) hint(macro "iNN") = uN(N) syntax u8 = uN(8) @@ -49,7 +49,7 @@ def $M(N) = $signif(N) def $E(N) : nat hint(show `E) hint(macro none) def $E(N) = $expon(N) -syntax fN(N) hint(desc "floating-point number") hint(show f#%) hint(macro "fN") = +syntax fN(N) hint(desc "floating-point number") hint(show f#%) hint(macro "fNN") = | POS fNmag(N) hint(show $(+%)) \ | NEG fNmag(N) hint(show $(-%)) @@ -74,7 +74,7 @@ def $canon_(N) = $(2^($signif(N)-1)) ;; Vectors -syntax vN(N) hint(desc "vector") hint(show v#%) hint(macro "vN") = +syntax vN(N) hint(desc "vector") hint(show v#%) hint(macro "vNN") = iN(N) @@ -160,9 +160,9 @@ syntax valtype/syn hint(desc "value type") = syntax valtype/sem = | ... | BOT -syntax Inn hint(show I#n) hint(macro none) = I32 | I64 -syntax Fnn hint(show F#n) hint(macro none) = F32 | F64 -syntax Vnn hint(show V#n) hint(macro none) = V128 +syntax Inn hint(show I#N) hint(macro none) = I32 | I64 +syntax Fnn hint(show F#N) hint(macro none) = F32 | F64 +syntax Vnn hint(show V#N) hint(macro none) = V128 syntax Cnn hint(show t) = Inn | Fnn | Vnn def $ANYREF : reftype hint(show ANYREF) @@ -197,9 +197,9 @@ syntax packtype hint(desc "packed type") = I8 | I16 syntax lanetype hint(desc "lane type") = numtype | packtype syntax storagetype hint(desc "storage type") = valtype | packtype -syntax Pnn hint(show I#n) hint(macro none) = I8 | I16 -syntax Jnn hint(show I#n) hint(macro none) = Inn | Pnn -syntax Lnn hint(show I#n) hint(macro none) = Inn | Fnn | Pnn +syntax Pnn hint(show I#N) hint(macro none) = I8 | I16 +syntax Jnn hint(show I#N) hint(macro none) = Inn | Pnn +syntax Lnn hint(show I#N) hint(macro none) = Inn | Fnn | Pnn ;; Type definitions @@ -287,16 +287,16 @@ def $zsize(storagetype) : nat hint(show |%|) def $lanetype(shape) : lanetype hint(macro "shlanetype") ;; TODO: get rid of these terrible hacks by defining $Inn(nat) hint(show I#%) -def $sizenn(numtype) : nat hint(show n) hint(macro none) ;; HACK! -def $sizenn1(numtype) : nat hint(show n_1) hint(macro none) ;; HACK! -def $sizenn2(numtype) : nat hint(show n_2) hint(macro none) ;; HACK! +def $sizenn(numtype) : nat hint(show N) hint(macro none) ;; HACK! +def $sizenn1(numtype) : nat hint(show N_1) hint(macro none) ;; HACK! +def $sizenn2(numtype) : nat hint(show N_2) hint(macro none) ;; HACK! def $sizenn(nt) = $size(nt) def $sizenn1(nt) = $size(nt) def $sizenn2(nt) = $size(nt) -def $lsizenn(lanetype) : nat hint(show n) hint(macro none) ;; HACK! -def $lsizenn1(lanetype) : nat hint(show n_1) hint(macro none) ;; HACK! -def $lsizenn2(lanetype) : nat hint(show n_2) hint(macro none) ;; HACK! +def $lsizenn(lanetype) : nat hint(show N) hint(macro none) ;; HACK! +def $lsizenn1(lanetype) : nat hint(show N_1) hint(macro none) ;; HACK! +def $lsizenn2(lanetype) : nat hint(show N_2) hint(macro none) ;; HACK! def $lsizenn(lt) = $lsize(lt) def $lsizenn1(lt) = $lsize(lt) def $lsizenn2(lt) = $lsize(lt) @@ -372,12 +372,12 @@ syntax vvternop hint(macro "%" "V%") = BITSELECT syntax vvtestop hint(macro "%" "V%") = ANY_TRUE syntax vunop_(shape) hint(macro "%" "V%") -syntax vunop_(Jnn X N) = ABS | NEG - | POPCNT -- if Jnn = I8 -syntax vunop_(Fnn X N) = ABS | NEG | SQRT | CEIL | FLOOR | TRUNC | NEAREST +syntax vunop_(Jnn X M) = ABS | NEG + | POPCNT -- if $lsizenn(Jnn) = `8 +syntax vunop_(Fnn X M) = ABS | NEG | SQRT | CEIL | FLOOR | TRUNC | NEAREST syntax vbinop_(shape) hint(macro "%" "V%") -syntax vbinop_(Jnn X N) = +syntax vbinop_(Jnn X M) = | ADD | SUB | ADD_SAT sx hint(show ADD_SAT#_#%) -- if $lsizenn(Jnn) <= `16 @@ -387,28 +387,28 @@ syntax vbinop_(Jnn X N) = | Q15MULR_SAT_S -- if $lsizenn(Jnn) = `16 | MIN sx hint(show MIN#_#%) -- if $lsizenn(Jnn) <= `32 | MAX sx hint(show MAX#_#%) -- if $lsizenn(Jnn) <= `32 -syntax vbinop_(Fnn X N) = ADD | SUB | MUL | DIV | MIN | MAX | PMIN | PMAX +syntax vbinop_(Fnn X M) = ADD | SUB | MUL | DIV | MIN | MAX | PMIN | PMAX syntax vtestop_(shape) hint(macro "%" "V%") -syntax vtestop_(Jnn X N) = ALL_TRUE +syntax vtestop_(Jnn X M) = ALL_TRUE ;; syntax vtestop_(Fnn X N) = | ;; uninhabited syntax vrelop_(shape) hint(macro "%" "V%") -syntax vrelop_(Jnn X N) = EQ | NE +syntax vrelop_(Jnn X M) = EQ | NE | LT sx hint(show LT#_#%) -- if $lsizenn(Jnn) =/= `64 \/ sx = S | GT sx hint(show GT#_#%) -- if $lsizenn(Jnn) =/= `64 \/ sx = S | LE sx hint(show LE#_#%) -- if $lsizenn(Jnn) =/= `64 \/ sx = S | GE sx hint(show GE#_#%) -- if $lsizenn(Jnn) =/= `64 \/ sx = S -syntax vrelop_(Fnn X N) = EQ | NE | LT | GT | LE | GE +syntax vrelop_(Fnn X M) = EQ | NE | LT | GT | LE | GE -syntax vcvtop_(shape_1, shape_2) hint(macro "%" "V%") -syntax vcvtop_(Jnn_1 X N_1, Jnn_2 X N_2) = +syntax vcvtop_(shape_1, shape_2) hint(show vcvtop_((%,%))) hint(macro "%" "V%") +syntax vcvtop_(Jnn_1 X M_1, Jnn_2 X M_2) = | EXTEND -- if $lsizenn2(Jnn_2) = $(2 * $lsizenn1(Jnn_1)) -syntax vcvtop_(Jnn_1 X N_1, Fnn_2 X N_2) = - | CONVERT -- if $sizenn2(Fnn_2) >= $lsizenn1(Jnn_1) = 32 -syntax vcvtop_(Fnn_1 X N_1, Jnn_2 X N_2) = - | TRUNC_SAT -- if $sizenn1(Fnn_1) >= $lsizenn2(Jnn_2) = 32 -syntax vcvtop_(Fnn_1 X N_1, Fnn_2 X N_2) = +syntax vcvtop_(Jnn_1 X M_1, Fnn_2 X M_2) = + | CONVERT -- if $sizenn2(Fnn_2) >= $lsizenn1(Jnn_1) = `32 +syntax vcvtop_(Fnn_1 X M_1, Jnn_2 X M_2) = + | TRUNC_SAT -- if $sizenn1(Fnn_1) >= $lsizenn2(Jnn_2) = `32 +syntax vcvtop_(Fnn_1 X M_1, Fnn_2 X M_2) = | DEMOTE -- if $sizenn1(Fnn_1) > $sizenn2(Fnn_2) | PROMOTE -- if $sizenn1(Fnn_1) < $sizenn2(Fnn_2) @@ -416,28 +416,28 @@ syntax half hint(desc "lane part") = LOW | HIGH syntax half_(shape_1, shape_2) = half -- if $lanetype(shape_1) = imm_1 /\ $lanetype(shape_2) = imm_2 - \/ $lanetype(shape_2) = F64 /\ $lsize($lanetype(shape_1)) = 32 + \/ $lanetype(shape_2) = F64 /\ $lsize($lanetype(shape_1)) = `32 ;; TODO: only allow LOW in latter case syntax zero_(shape_1, shape_2) = ZERO - -- if $lanetype(shape_1) = F64 /\ $lsize($lanetype(shape_2)) = 32 + -- if $lanetype(shape_1) = F64 /\ $lsize($lanetype(shape_2)) = `32 (; syntax half_(shape_1, shape_2) -syntax half_(Jnn_1 X N_1, Jnn_2 X N_2) = half -syntax half_(Lnn_1 X N_1, Fnn_2 X N_2) = LOW -- if $(2 * $lsize(Lnn_1)) = $size(Fnn_2) = 64 +syntax half_(Jnn_1 X M_1, Jnn_2 X M_2) = half +syntax half_(Lnn_1 X M_1, Fnn_2 X M_2) = LOW -- if $(2 * $lsize(Lnn_1)) = $size(Fnn_2) = `64 syntax zero_(shape_1, shape_2) -syntax zero_(Fnn_1 X N_1, Lnn_2 X N_2) = ZERO -- if $(2 * $lsize(Lnn_2)) = $size(Fnn_1) = 64 +syntax zero_(Fnn_1 X M_1, Lnn_2 X M_2) = ZERO -- if $(2 * $lsize(Lnn_2)) = $size(Fnn_1) = `64 ;) syntax vshiftop_(ishape) hint(macro "%" "V%") -syntax vshiftop_(Jnn X N) = SHL | SHR sx hint(show SHR#_#%) +syntax vshiftop_(Jnn X M) = SHL | SHR sx hint(show SHR#_#%) syntax vextunop_(ishape) hint(macro "%" "V%") -syntax vextunop_(Jnn X N) = +syntax vextunop_(Jnn X M) = | EXTADD_PAIRWISE -- if `16 <= $lsizenn(Jnn) <= `32 syntax vextbinop_(ishape) hint(macro "%" "V%") -syntax vextbinop_(Jnn X N) = +syntax vextbinop_(Jnn X M) = | EXTMUL half hint(show EXTMUL#_#%) | DOT -- if $lsizenn(Jnn) = `32 @@ -505,7 +505,7 @@ syntax instr/num hint(desc "numeric instruction") = ... | RELOP numtype relop_(numtype) hint(show %.%) | CVTOP numtype_1 numtype_2 cvtop sx? hint(show %1.%3#_#%2#_#%4) hint(show %1.%3#_#%2) -- if numtype_1 =/= numtype_2 - | EXTEND numtype n hint(show %.EXTEND#%#_#S) + | EXTEND numtype N hint(show %.EXTEND#%#_#S) | ... syntax instr/vec hint(desc "vector instruction") = ... @@ -514,35 +514,35 @@ syntax instr/vec hint(desc "vector instruction") = ... | VVBINOP vectype vvbinop hint(show %.%) | VVTERNOP vectype vvternop hint(show %.%) | VVTESTOP vectype vvtestop hint(show %.%) - | VUNOP shape vunop_(shape) hint(show %.%) - | VBINOP shape vbinop_(shape) hint(show %.%) - | VTESTOP shape vtestop_(shape) hint(show %.%) - | VRELOP shape vrelop_(shape) hint(show %.%) - | VSHIFTOP ishape vshiftop_(ishape) hint(show %.%) - | VBITMASK ishape hint(show %.BITMASK) hint(macro "VBITMASK") - | VSWIZZLE ishape hint(show %.SWIZZLE) hint(macro "VSWIZZLE") + | VUNOP shape vunop_(shape) hint(show ##%.%) + | VBINOP shape vbinop_(shape) hint(show ##%.%) + | VTESTOP shape vtestop_(shape) hint(show ##%.%) + | VRELOP shape vrelop_(shape) hint(show ##%.%) + | VSHIFTOP ishape vshiftop_(ishape) hint(show ##%.%) + | VBITMASK ishape hint(show ##%.BITMASK) hint(macro "VBITMASK") + | VSWIZZLE ishape hint(show ##%.SWIZZLE) hint(macro "VSWIZZLE") -- if ishape = I8 X `16 - | VSHUFFLE ishape laneidx* hint(show %.SHUFFLE %) hint(macro "VSHUFFLE") - -- if ishape = I8 X `16 /\ |laneidx*| = 16 - | VSPLAT shape hint(show %.SPLAT) hint(macro "VSPLAT") - | VEXTRACT_LANE shape sx? laneidx hint(show %.EXTRACT_LANE#_#% %) hint(macro "VEXTRACT_LANE") - -- if $lanetype(shape) = numtype <=> sx? = eps - | VREPLACE_LANE shape laneidx hint(show %.REPLACE_LANE %) hint(macro "VREPLACE_LANE") + | VSHUFFLE ishape laneidx* hint(show ##%.SHUFFLE %) hint(macro "VSHUFFLE") + -- if ishape = I8 X `16 /\ |laneidx*| = `16 | VEXTUNOP ishape_1 ishape_2 vextunop_(ishape_1) sx - hint(show %1.%3#_#%2#_#%4) + hint(show ##%1.%3#_# ##%2#_#%4) -- if $($lsize($lanetype(ishape_1)) = 2*$lsize($lanetype(ishape_2))) | VEXTBINOP ishape_1 ishape_2 vextbinop_(ishape_1) sx - hint(show %1.%3#_#%2#_#%4) + hint(show ##%1.%3#_# ##%2#_#%4) -- if $($lsize($lanetype(ishape_1)) = 2*$lsize($lanetype(ishape_2))) ;; TODO: /\ (vextbinop =/= DOT \/ sx = S) - | VNARROW ishape_1 ishape_2 sx hint(show %.NARROW#_#%#_#%) hint(macro "VNARROW") - -- if $($lsize($lanetype(ishape_2)) = 2*$lsize($lanetype(ishape_1)) <= 32) + | VNARROW ishape_1 ishape_2 sx hint(show ##%.NARROW#_# ##%#_#%) hint(macro "VNARROW") + -- if $($lsize($lanetype(ishape_2)) = 2*$lsize($lanetype(ishape_1)) <= `32) | VCVTOP shape_1 shape_2 vcvtop_(shape_2, shape_1) half_(shape_2, shape_1)? sx? zero_(shape_2, shape_1)? - hint(show %1.%3#_#%4#_#%2#_#%5#_#%6) - hint(show %1.%3#_#%4#_#%2#_#%5) ;; TODO: this is wrong when half is present - hint(show %1.%3#_#%2#_#%4) ;; TODO: this is wrong when half is absent - hint(show %1.%3#_#%2) + hint(show ##%1.%3#_#%4#_# ##%2#_#%5#_#%6) + hint(show ##%1.%3#_#%4#_# ##%2#_#%5) ;; TODO: this is wrong when half is present + hint(show ##%1.%3#_# ##%2#_#%4) ;; TODO: this is wrong when half is absent + hint(show ##%1.%3#_# ##%2) -- if $lanetype(shape_1) =/= $lanetype(shape_2) + | VSPLAT shape hint(show ##%.SPLAT) hint(macro "VSPLAT") + | VEXTRACT_LANE shape sx? laneidx hint(show ##%.EXTRACT_LANE#_#% %) hint(macro "VEXTRACT_LANE") + -- if $lanetype(shape) = numtype <=> sx? = eps + | VREPLACE_LANE shape laneidx hint(show ##%.REPLACE_LANE %) hint(macro "VREPLACE_LANE") | ... syntax instr/ref hint(desc "reference instruction") = ... @@ -618,14 +618,14 @@ syntax instr/elem hint(desc "element instruction") = ... syntax sz hint(desc "pack size") = `8 | `16 | `32 | `64 syntax instr/memory hint(desc "memory instruction") = ... - | LOAD numtype (sz _ sx)? memidx memarg hint(show %.LOAD % %) hint(show %.LOAD#% % %) - -- (if numtype = Inn /\ sz < $size(Inn))? ;; TODO: take size implicitly - | STORE numtype sz? memidx memarg hint(show %.STORE % %) hint(show %.STORE#% % %) - -- (if numtype = Inn /\ sz < $size(Inn))? ;; TODO: take size implicitly - | VLOAD vectype vloadop? memidx memarg hint(show %.LOAD % %) hint(show %.LOAD#% % %) hint(macro "V%") - | VLOAD_LANE vectype sz memidx memarg laneidx hint(show %.LOAD#%#_#LANE % % %) hint(macro "V%") - | VSTORE vectype memidx memarg hint(show %.STORE % %) hint(macro "V%") - | VSTORE_LANE vectype sz memidx memarg laneidx hint(show %.STORE#%#_#LANE % % %) hint(macro "V%") + | LOAD numtype (N _ sx)? memidx memarg hint(show %.LOAD % %) hint(show %.LOAD#% % %) + -- (if numtype = Inn /\ N < $size(Inn))? ;; TODO: take size implicitly + | STORE numtype N? memidx memarg hint(show %.STORE % %) hint(show %.STORE#% % %) + -- (if numtype = Inn /\ N < $size(Inn))? ;; TODO: take size implicitly + | VLOAD vectype vloadop? memidx memarg hint(show %.LOAD % %) hint(show %.LOAD# ##% % %) hint(macro "V%") + | VLOAD_LANE vectype N memidx memarg laneidx hint(show %.LOAD#%#_#LANE % % %) hint(macro "V%") + | VSTORE vectype memidx memarg hint(show %.STORE % %) hint(macro "V%") + | VSTORE_LANE vectype N memidx memarg laneidx hint(show %.STORE#%#_#LANE % % %) hint(macro "V%") | MEMORY.SIZE memidx | MEMORY.GROW memidx | MEMORY.FILL memidx diff --git a/spectec/spec/wasm-3.0/6-typing.watsup b/spectec/spec/wasm-3.0/6-typing.watsup index a28ccbc228..22745f818d 100644 --- a/spectec/spec/wasm-3.0/6-typing.watsup +++ b/spectec/spec/wasm-3.0/6-typing.watsup @@ -878,19 +878,19 @@ rule Instr_ok/vvtestop: C |- VVTESTOP V128 vvtestop : V128 -> I32 rule Instr_ok/vunop: - C |- VUNOP sh vunop_sh : V128 -> V128 + C |- VUNOP sh vunop : V128 -> V128 rule Instr_ok/vbinop: - C |- VBINOP sh vbinop_sh : V128 V128 -> V128 + C |- VBINOP sh vbinop : V128 V128 -> V128 rule Instr_ok/vtestop: - C |- VTESTOP sh vtestop_sh : V128 -> I32 + C |- VTESTOP sh vtestop : V128 -> I32 rule Instr_ok/vrelop: - C |- VRELOP sh vrelop_sh : V128 V128 -> V128 + C |- VRELOP sh vrelop : V128 V128 -> V128 rule Instr_ok/vshiftop: - C |- VSHIFTOP sh vshiftop_sh : V128 I32 -> V128 + C |- VSHIFTOP sh vshiftop : V128 I32 -> V128 rule Instr_ok/vbitmask: C |- VBITMASK sh : V128 -> I32 diff --git a/spectec/spec/wasm-3.0/8-reduction.watsup b/spectec/spec/wasm-3.0/8-reduction.watsup index 5b4ed6bd86..5016f84010 100644 --- a/spectec/spec/wasm-3.0/8-reduction.watsup +++ b/spectec/spec/wasm-3.0/8-reduction.watsup @@ -602,12 +602,12 @@ rule Step_pure/vbinop-trap: ;; TODO: introduce $vitestop for uniformity rule Step_pure/vtestop-true: - (VCONST V128 c) (VTESTOP $($(Jnn X N)) ALL_TRUE) ~> (CONST I32 1) + (VCONST V128 c) (VTESTOP (Jnn X N) ALL_TRUE) ~> (CONST I32 1) -- if ci_1* = $lanes_(Jnn X N, c) -- (if $(ci_1 =/= 0))* ;; TODO: same line rule Step_pure/vtestop-false: - (VCONST V128 c) (VTESTOP $($(Jnn X N)) ALL_TRUE) ~> (CONST I32 0) + (VCONST V128 c) (VTESTOP (Jnn X N) ALL_TRUE) ~> (CONST I32 0) -- otherwise @@ -622,7 +622,7 @@ rule Step_pure/vrelop: rule Step_pure/vshiftop: - (VCONST V128 c_1) (CONST I32 n) (VSHIFTOP $($(Jnn X N)) vshiftop) ~> (VCONST V128 c) + (VCONST V128 c_1) (CONST I32 n) (VSHIFTOP (Jnn X N) vshiftop) ~> (VCONST V128 c) -- if c'* = $lanes_(Jnn X N, c_1) -- if c = $invlanes_(Jnn X N, $vshiftop(Jnn X N, vshiftop, c', n)*) diff --git a/spectec/src/backend-latex/render.ml b/spectec/src/backend-latex/render.ml index c430995417..6a400d77e1 100644 --- a/spectec/src/backend-latex/render.ml +++ b/spectec/src/backend-latex/render.ml @@ -558,6 +558,7 @@ and expand_exp env templ args i e = let e1' = expand_exp env templ args i e1 in let e2' = expand_exp env templ args i e2 in FuseE (e1', e2') + | UnparenE e1 -> UnparenE (expand_exp env templ args i e1) ) $ e.at and expand_expfield env templ args i (atom, e) = @@ -652,7 +653,7 @@ let lower = String.lowercase_ascii let dash_id = Str.(global_replace (regexp "-") "{-}") let quote_id = Str.(global_replace (regexp "_+") "\\_") -let shrink_id = Str.(global_replace (regexp "[0-9]+") "{\\\\scriptstyle\\0}") +let shrink_id = Str.(global_replace (regexp "[0-9A-Z]+") "{\\\\scriptstyle \\0}") let macrofy_id = Str.(global_replace (regexp "[_.]") "") let id_style = function @@ -673,10 +674,16 @@ let render_id' env style id templ = if env.config.macros_for_ids && String.length id > 2 && (style = `Var || style = `Func) then Printf.eprintf "[id w/o macro] %s%s\n%!" (if style = `Func then "$" else "") id; *) - let id' = shrink_id (quote_id id) in - if style = `Var && String.length id' = 1 && Lib.Char.is_letter_ascii id'.[0] - then id' - else id_style style ^ "{" ^ (if style = `Atom then lower id' else id') ^ "}" + let id' = quote_id id in + let id'' = + match style with + | `Var | `Func -> shrink_id id' + | `Atom -> shrink_id (lower id') + | `Token -> id' + in + if style = `Var && String.length id'' = 1 && Lib.Char.is_letter_ascii id''.[0] + then id'' + else id_style style ^ "{" ^ id'' ^ "}" let rec render_id_sub style show macro env first at = function | [] -> "" @@ -1024,6 +1031,7 @@ Printf.eprintf "[render %s:X @ %s] try expansion\n%!" (Source.string_of_region e let e2' = as_paren_exp (fuse_exp e2 true) in let es = e2' :: flatten_fuse_exp_rev e1 in String.concat "" (List.map (fun e -> "{" ^ render_exp env e ^ "}") (List.rev es)) + | UnparenE ({it = ParenE (e1, _); _} | e1) -> render_exp env e1 | HoleE `None -> "" | HoleE _ -> error e.at "misplaced hole" @@ -1162,6 +1170,7 @@ and render_sym env g = | AttrG (e, g1) -> render_exp env e ^ "{:}" ^ render_sym env g1 | FuseG (g1, g2) -> "{" ^ render_sym env g1 ^ "}" ^ "{" ^ render_sym env g2 ^ "}" + | UnparenG ({it = ParenG g1; _} | g1) -> render_sym env g1 and render_syms sep env gs = altern_map_nl sep " \\\\ &&&" (render_sym env) gs diff --git a/spectec/src/backend-prose/render.ml b/spectec/src/backend-prose/render.ml index 85fd7025ce..3f4f78aac0 100644 --- a/spectec/src/backend-prose/render.ml +++ b/spectec/src/backend-prose/render.ml @@ -150,7 +150,7 @@ and al_to_el_expr expr = let ele = match ele.it with | El.Ast.IterE (_, eliter2) when eliter2 <> eliter -> - El.Ast.ParenE (ele, false) $ ele.at + El.Ast.ParenE (ele, `Insig) $ ele.at | _ -> ele in Some (El.Ast.IterE (ele, eliter)) @@ -165,7 +165,7 @@ and al_to_el_expr expr = let* elel = al_to_el_exprs el in let ele = El.Ast.SeqE ([ ela ] @ elel) in if List.length elel = 0 then Some ele - else Some (El.Ast.ParenE (ele $ no_region, false)) + else Some (El.Ast.ParenE (ele $ no_region, `Insig)) | Al.Ast.OptE (Some e) -> let* ele = al_to_el_expr e in Some (ele.it) diff --git a/spectec/src/el/ast.ml b/spectec/src/el/ast.ml index 5bb38a0a86..3c9f771900 100644 --- a/spectec/src/el/ast.ml +++ b/spectec/src/el/ast.ml @@ -118,7 +118,7 @@ and exp' = | CompE of exp * exp (* exp `++` exp *) | LenE of exp (* `|` exp `|` *) | SizeE of id (* `||` exp `||` *) - | ParenE of exp * bool (* `(` exp `)` *) + | ParenE of exp * [`Sig | `Insig] (* `(` exp `)` *) | TupE of exp list (* `(` list2(exp, `,`) `)` *) | InfixE of exp * atom * exp (* exp atom exp *) | BrackE of atom * exp * atom (* ``` ([{ exp }]) *) @@ -127,6 +127,7 @@ and exp' = | TypE of exp * typ (* exp `:` typ *) | HoleE of [`Num of int | `Next | `Rest | `None] (* `%N` or `%` or `%%` or `!%` *) | FuseE of exp * exp (* exp `#` exp *) + | UnparenE of exp (* `##` exp *) and expfield = atom * exp (* atom exp *) @@ -155,6 +156,7 @@ and sym' = | ArithG of exp (* `$(` exp `)` *) | AttrG of exp * sym (* exp `:` sym *) | FuseG of sym * sym (* sym `#` sym *) + | UnparenG of sym (* `##` sym *) and prod = prod' phrase and prod' = sym * exp * prem nl_list (* `|` sym `=>` exp (`--` prem)* *) diff --git a/spectec/src/el/convert.ml b/spectec/src/el/convert.ml index b96b829bd2..63fda6c8e0 100644 --- a/spectec/src/el/convert.ml +++ b/spectec/src/el/convert.ml @@ -81,7 +81,7 @@ let rec exp_of_typ t = (match t.it with | VarT (id, args) -> VarE (id, args) | BoolT | NumT _ | TextT -> VarE (varid_of_typ t, []) - | ParenT t1 -> ParenE (exp_of_typ t1, false) + | ParenT t1 -> ParenE (exp_of_typ t1, `Insig) | TupT ts -> TupE (List.map exp_of_typ ts) | IterT (t1, iter) -> IterE (exp_of_typ t1, iter) | StrT tfs -> StrE (map_nl_list expfield_of_typfield tfs) @@ -111,7 +111,7 @@ let rec pat_of_typ' s t : exp option = Some (VarE (id, []) $ t.at) | ParenT t1 -> let* e1 = pat_of_typ' s t1 in - Some (ParenE (e1, false) $ t.at) + Some (ParenE (e1, `Insig) $ t.at) | TupT ts -> let* es = pats_of_typs' s ts in Some (TupE es $ t.at) @@ -145,6 +145,7 @@ let rec sym_of_exp e = | IterE (e1, iter) -> IterG (sym_of_exp e1, iter) | TypE (e1, t) -> AttrG (e1, sym_of_exp (exp_of_typ t)) | FuseE (e1, e2) -> FuseG (sym_of_exp e1, sym_of_exp e2) + | UnparenE e1 -> UnparenG (sym_of_exp e1) | _ -> ArithG e ) $ e.at @@ -155,12 +156,13 @@ let rec exp_of_sym g = | TextG t -> TextE t | EpsG -> EpsE | SeqG gs -> SeqE (map_filter_nl_list exp_of_sym gs) - | ParenG g1 -> ParenE (exp_of_sym g1, false) + | ParenG g1 -> ParenE (exp_of_sym g1, `Insig) | TupG gs -> TupE (List.map exp_of_sym gs) | IterG (g1, iter) -> IterE (exp_of_sym g1, iter) | ArithG e -> e.it | AttrG (e, g2) -> TypE (e, typ_of_exp (exp_of_sym g2)) | FuseG (g1, g2) -> FuseE (exp_of_sym g1, exp_of_sym g2) + | UnparenG g1 -> UnparenE (exp_of_sym g1) | _ -> error g.at "malformed expression" ) $ g.at diff --git a/spectec/src/el/eq.ml b/spectec/src/el/eq.ml index 0afb2dba87..ecd6964368 100644 --- a/spectec/src/el/eq.ml +++ b/spectec/src/el/eq.ml @@ -85,7 +85,8 @@ and eq_exp e1 e2 = eq_exp e11 e21 && op1 = op2 && eq_exp e12 e22 | CmpE (e11, op1, e12), CmpE (e21, op2, e22) -> eq_exp e11 e21 && op1 = op2 && eq_exp e12 e22 - | LenE e11, LenE e21 -> eq_exp e11 e21 + | LenE e11, LenE e21 + | UnparenE e11, UnparenE e21 -> eq_exp e11 e21 | IdxE (e11, e12), IdxE (e21, e22) | CommaE (e11, e12), CommaE (e21, e22) | CompE (e11, e12), CompE (e21, e22) diff --git a/spectec/src/el/free.ml b/spectec/src/el/free.ml index 6e13ae42ab..2e240a6aaf 100644 --- a/spectec/src/el/free.ml +++ b/spectec/src/el/free.ml @@ -126,7 +126,7 @@ and free_exp e = | AtomE _ | BoolE _ | NatE _ | TextE _ | EpsE | HoleE _ -> empty | UnE (_, e1) | DotE (e1, _) | LenE e1 - | ParenE (e1, _) | BrackE (_, e1, _) -> free_exp e1 + | ParenE (e1, _) | BrackE (_, e1, _) | UnparenE e1 -> free_exp e1 | SizeE id -> free_gramid id | BinE (e1, _, e2) | CmpE (e1, _, e2) | IdxE (e1, e2) | CommaE (e1, e2) | CompE (e1, e2) @@ -173,7 +173,7 @@ and det_exp e = | UnE _ | BinE _ | CmpE _ | IdxE _ | SliceE _ | UpdE _ | ExtE _ | CommaE _ | CompE _ | DotE _ | LenE _ | SizeE _ -> idx_exp e - | HoleE _ | FuseE _ -> assert false + | HoleE _ | FuseE _ | UnparenE _ -> assert false and det_expfield (_, e) = det_exp e @@ -219,7 +219,7 @@ and free_sym g = | NatG _ | TextG _ | EpsG -> empty | SeqG gs | AltG gs -> free_nl_list free_sym gs | RangeG (g1, g2) | FuseG (g1, g2) -> free_sym g1 + free_sym g2 - | ParenG g1 -> free_sym g1 + | ParenG g1 | UnparenG g1 -> free_sym g1 | TupG gs -> free_list free_sym gs | IterG (g1, iter) -> free_sym g1 + free_iter iter | ArithG e -> free_exp e @@ -229,12 +229,13 @@ and det_sym g = match g.it with | VarG _ | NatG _ | TextG _ | EpsG -> empty | SeqG gs | AltG gs -> free_nl_list det_sym gs - | RangeG (g1, g2) | FuseG (g1, g2) -> det_sym g1 + det_sym g2 + | RangeG (g1, g2) -> det_sym g1 + det_sym g2 | ParenG g1 -> det_sym g1 | TupG gs -> free_list det_sym gs | IterG (g1, iter) -> det_sym g1 + det_iter iter | ArithG e -> det_exp e | AttrG (e, g1) -> det_exp e + det_sym g1 + | FuseG _ | UnparenG _ -> assert false and free_prod prod = let (g, e, prems) = prod.it in diff --git a/spectec/src/el/iter.ml b/spectec/src/el/iter.ml index 506214a2c0..6a0e51fd57 100644 --- a/spectec/src/el/iter.ml +++ b/spectec/src/el/iter.ml @@ -126,7 +126,7 @@ and exp e = | TextE s -> text s | EpsE | HoleE _ -> () | UnE (op, e1) -> unop op; exp e1 - | LenE e1 | ParenE (e1, _) -> exp e1 + | LenE e1 | ParenE (e1, _) | UnparenE e1 -> exp e1 | DotE (e1, at) -> exp e1; atom at | SizeE x -> gramid x | BinE (e1, op, e2) -> exp e1; binop op; exp e2 @@ -180,7 +180,7 @@ and sym g = | EpsG -> () | SeqG gs | AltG gs -> nl_list sym gs | RangeG (g1, g2) | FuseG (g1, g2) -> sym g1; sym g2 - | ParenG g1 -> sym g1 + | ParenG g1 | UnparenG g1 -> sym g1 | TupG gs -> list sym gs | IterG (g1, it) -> sym g1; iter it | ArithG e -> exp e @@ -289,6 +289,7 @@ and clone_exp e = | IterE (e1, iter) -> IterE (clone_exp e1, clone_iter iter) | TypE (e1, t) -> TypE (clone_exp e1, clone_typ t) | FuseE (e1, e2) -> FuseE (clone_exp e1, clone_exp e2) + | UnparenE e1 -> UnparenE (clone_exp e1) ) $ e.at and clone_expfield (atom, e) = (clone_atom atom, clone_exp e) diff --git a/spectec/src/el/print.ml b/spectec/src/el/print.ml index dab154ce08..e2fbd3e643 100644 --- a/spectec/src/el/print.ml +++ b/spectec/src/el/print.ml @@ -156,7 +156,8 @@ and string_of_exp e = | CompE (e1, e2) -> string_of_exp e1 ^ " ++ " ^ string_of_exp e2 | LenE e1 -> "|" ^ string_of_exp e1 ^ "|" | SizeE id -> "||" ^ string_of_gramid id ^ "||" - | ParenE (e, signif) -> "(" ^ string_of_exp e ^ ")" ^ (if signif then "!" else "") + | ParenE (e, signif) -> + "(" ^ string_of_exp e ^ ")" ^ (match signif with `Sig -> "!" | `Insig -> "") | TupE es -> "(" ^ string_of_exps ", " es ^ ")" | InfixE (e1, atom, e2) -> string_of_exp e1 ^ space string_of_atom atom ^ string_of_exp e2 @@ -170,6 +171,7 @@ and string_of_exp e = | HoleE `Rest -> "%%" | HoleE `None -> "!%" | FuseE (e1, e2) -> string_of_exp e1 ^ "#" ^ string_of_exp e2 + | UnparenE e1 -> "##" ^ string_of_exp e1 and string_of_exps sep es = concat sep (List.map string_of_exp es) @@ -221,6 +223,7 @@ and string_of_sym g = | ArithG e -> string_of_exp e | AttrG (e, g1) -> string_of_exp e ^ ":" ^ string_of_sym g1 | FuseG (g1, g2) -> string_of_sym g1 ^ "#" ^ string_of_sym g2 + | UnparenG g1 -> "##" ^ string_of_sym g1 and string_of_prod prod = let (g, e, prems) = prod.it in diff --git a/spectec/src/el/subst.ml b/spectec/src/el/subst.ml index 4f03208618..f9544070c0 100644 --- a/spectec/src/el/subst.ml +++ b/spectec/src/el/subst.ml @@ -139,6 +139,7 @@ and subst_exp s e = | TypE (e1, t) -> TypE (subst_exp s e1, subst_typ s t) | HoleE h -> HoleE h | FuseE (e1, e2) -> FuseE (subst_exp s e1, subst_exp s e2) + | UnparenE e1 -> UnparenE (subst_exp s e1) ) $ e.at and subst_expfield s (atom, e) = (atom, subst_exp s e) @@ -185,6 +186,7 @@ and subst_sym s g = | ArithG e -> ArithG (subst_exp s e) | AttrG (e, g1) -> AttrG (subst_exp s e, subst_sym s g1) | FuseG (g1, g2) -> FuseG (subst_sym s g1, subst_sym s g2) + | UnparenG g1 -> UnparenG (subst_sym s g1) ) $ g.at (* diff --git a/spectec/src/frontend/dim.ml b/spectec/src/frontend/dim.ml index 25fd0d11e2..0ea513c847 100644 --- a/spectec/src/frontend/dim.ml +++ b/spectec/src/frontend/dim.ml @@ -132,9 +132,7 @@ and check_exp env ctx e = | NatE _ | TextE _ | SizeE _ - | EpsE - | HoleE _ - | FuseE _ -> () + | EpsE -> () | UnE (_, e1) | DotE (e1, _) | LenE e1 @@ -165,6 +163,9 @@ and check_exp env ctx e = | IterE (e1, iter) -> check_iter env ctx iter; check_exp env (strip_index iter::ctx) e1 + | HoleE _ + | FuseE _ + | UnparenE _ -> assert false and check_path env ctx p = match p.it with @@ -189,8 +190,7 @@ and check_sym env ctx g = | EpsG -> () | SeqG gs | AltG gs -> iter_nl_list (check_sym env ctx) gs - | RangeG (g1, g2) - | FuseG (g1, g2) -> + | RangeG (g1, g2) -> check_sym env ctx g1; check_sym env ctx g2 | ParenG g1 -> @@ -203,6 +203,8 @@ and check_sym env ctx g = | IterG (g1, iter) -> check_iter env ctx iter; check_sym env (strip_index iter::ctx) g1 + | FuseG _ + | UnparenG _ -> assert false and check_prod env ctx prod = let (g, e, prems) = prod.it in diff --git a/spectec/src/frontend/elab.ml b/spectec/src/frontend/elab.ml index ea7874290b..ff7672392d 100644 --- a/spectec/src/frontend/elab.ml +++ b/spectec/src/frontend/elab.ml @@ -1001,6 +1001,7 @@ and infer_exp' env e : Il.exp' * typ = (elab_exp env e1 t).it, t | HoleE _ -> error e.at "misplaced hole" | FuseE _ -> error e.at "misplaced token concatenation" + | UnparenE _ -> error e.at "misplaced unparenthesize" and elab_exp env e t : Il.exp = @@ -1105,7 +1106,7 @@ and elab_exp' env e t : Il.exp' = | SizeE _ -> let e', t' = infer_exp env e in cast_exp' "expansion length" env e' t' t - | ParenE (e1, true) when is_iter_typ env t -> + | ParenE (e1, `Sig) when is_iter_typ env t -> (* Significant parentheses indicate a singleton *) let t1, _iter = as_iter_typ "expression" env Check t e.at in let e1' = elab_exp env e1 t1 in @@ -1156,7 +1157,8 @@ and elab_exp' env e t : Il.exp' = let e', t' = infer_exp env e in cast_exp' "type annotation" env e' t' t | HoleE _ -> error e.at "misplaced hole" - | FuseE _ -> error e.at "misplaced token fuse" + | FuseE _ -> error e.at "misplaced token concatenation" + | UnparenE _ -> error e.at "misplaced unparenthesize" and elab_expfields env tid efs tfs t0 at : Il.expfield list = Debug.(log_in_at "el.elab_expfields" at @@ -1231,7 +1233,7 @@ and elab_exp_notation' env tid e t : Il.exp list * Subst.t = ignore (elab_atom atom tid); [], Subst.empty | InfixE (e1, atom, e2), InfixT (_, atom', _) when Il.Atom.sub atom' atom -> - let e21 = ParenE (SeqE [] $ e2.at, false) $ e2.at in + let e21 = ParenE (SeqE [] $ e2.at, `Insig) $ e2.at in elab_exp_notation' env tid (InfixE (e1, atom', SeqE [e21; e2] $ e2.at) $ e.at) t | InfixE (e1, atom, e2), InfixT (t1, atom', t2) -> @@ -1270,7 +1272,7 @@ and elab_exp_notation' env tid e t : Il.exp list * Subst.t = ) | SeqE ({it = AtomE atom; at; _}::es2), SeqT ({it = AtomT atom'; _}::_) when Il.Atom.sub atom' atom -> - let e21 = ParenE (SeqE [] $ at, false) $ at in + let e21 = ParenE (SeqE [] $ at, `Insig) $ at in elab_exp_notation' env tid (SeqE ((AtomE atom' $ at) :: e21 :: es2) $ e.at) t | SeqE (e1::es2), SeqT (t1::ts2) -> let es1', s1 = elab_exp_notation' env tid (unparen_exp e1) t1 in @@ -1301,7 +1303,7 @@ and elab_exp_notation' env tid e t : Il.exp list * Subst.t = let iter1' = elab_iterexp env iter1 in [Il.IterE (tup_exp' es1' e1.at, iter1') $$ e.at % !!!env tid t], Subst.empty (* Significant parentheses indicate a singleton *) - | ParenE (e1, true), IterT (t1, iter) -> + | ParenE (e1, `Sig), IterT (t1, iter) -> let es', _s = elab_exp_notation' env tid e1 t1 in [lift_exp' (tup_exp' es' e.at) iter $$ e.at % elab_typ env t], Subst.empty (* Elimination forms are considered splices *) @@ -1619,6 +1621,7 @@ and elab_sym env g : typ * env = let _e' = elab_exp env1 e t1 in TupT [] $ g.at, env | FuseG _ -> error g.at "misplaced token concatenation" + | UnparenG _ -> error g.at "misplaced token unparenthesize" and elab_sym_list env = function | [] -> [], env diff --git a/spectec/src/frontend/eval.ml b/spectec/src/frontend/eval.ml index 9e15183109..f29bbd82b8 100644 --- a/spectec/src/frontend/eval.ml +++ b/spectec/src/frontend/eval.ml @@ -285,7 +285,7 @@ and reduce_exp env e : exp = | IterE (e1, iter) -> let e1' = reduce_exp env e1 in IterE (e1', iter) $ e.at (* TODO *) - | HoleE _ | FuseE _ -> assert false + | HoleE _ | FuseE _ | UnparenE _ -> assert false and reduce_expfield env (atom, e) : expfield = (atom, reduce_exp env e) @@ -544,8 +544,8 @@ and match_exp env s e1 e2 : subst option = *) | IterE (e11, iter1), IterE (e21, iter2) -> let* s' = match_exp env s e11 e21 in match_iter env s' iter1 iter2 - | (HoleE _ | FuseE _), _ - | _, (HoleE _ | FuseE _) -> assert false + | (HoleE _ | FuseE _ | UnparenE _), _ + | _, (HoleE _ | FuseE _ | UnparenE _) -> assert false | _, _ when is_normal_exp e1 -> None | _, _ -> raise Irred diff --git a/spectec/src/frontend/lexer.mll b/spectec/src/frontend/lexer.mll index 8355274876..8fc759a23e 100644 --- a/spectec/src/frontend/lexer.mll +++ b/spectec/src/frontend/lexer.mll @@ -206,6 +206,7 @@ and token = parse | "%%" { MULTIHOLE } | "!%" { NOTHING } | "#" { FUSE } + | "##" { FUSEFUSE } | "`" { TICK } diff --git a/spectec/src/frontend/parser.mly b/spectec/src/frontend/parser.mly index 62416e7108..84d39c7822 100644 --- a/spectec/src/frontend/parser.mly +++ b/spectec/src/frontend/parser.mly @@ -68,7 +68,7 @@ let prec_of_exp = function (* as far as iteration is concerned *) | AtomE _ | IdxE _ | SliceE _ | UpdE _ | ExtE _ | DotE _ | IterE _ -> Post | SeqE _ -> Seq | UnE _ | BinE _ | CmpE _ | InfixE _ | LenE _ | SizeE _ - | CommaE _ | CompE _ | TypE _ | FuseE _ -> Op + | CommaE _ | CompE _ | TypE _ | FuseE _ | UnparenE _ -> Op (* Extra parentheses can be inserted to disambiguate the role of elements of * an iteration. For example, `( x* )` will be interpreted differently from `x*` @@ -80,7 +80,8 @@ let prec_of_exp = function (* as far as iteration is concerned *) * are assumed to have been inserted to express iteration injection. *) let signify_pars prec = function - | ParenE (exp, false) -> ParenE (exp, prec < prec_of_exp exp.it) + | ParenE (exp, `Insig) -> + ParenE (exp, if prec < prec_of_exp exp.it then `Sig else `Insig) | exp' -> exp' let is_post_exp e = @@ -122,7 +123,7 @@ let rec is_typcon t = %token IN PREC SUCC TURNSTILE TILESTURN %token DOLLAR TICK %token BOT TOP -%token HOLE MULTIHOLE NOTHING FUSE +%token HOLE MULTIHOLE NOTHING FUSE FUSEFUSE %token HOLEN %token BOOL NAT INT RAT REAL TEXT %token SYNTAX GRAMMAR RELATION RULE VAR DEF @@ -168,9 +169,9 @@ let rec is_typcon t = | COMMA_NL {} tup_list(X) : - | (* empty *) { [], true } - | X { $1::[], false } - | X comma tup_list(X) { $1::(fst $3), true } + | (* empty *) { [], `Sig } + | X { $1::[], `Insig } + | X comma tup_list(X) { $1::(fst $3), `Sig } comma_list(X) : | tup_list(X) { fst $1 } @@ -348,7 +349,7 @@ iter : | STAR { List } | UP arith_prim { match $2.it with - | ParenE ({it = CmpE({it = VarE (id, []); _}, LtOp, e); _}, false) -> + | ParenE ({it = CmpE({it = VarE (id, []); _}, LtOp, e); _}, `Insig) -> ListN (e, Some id) | _ -> ListN ($2, None) } @@ -373,7 +374,7 @@ typ_post_ : | LPAREN tup_list(typ) RPAREN { match $2 with | [], _ -> ParenT (SeqT [] $ $sloc) - | [t], false -> ParenT t + | [t], `Insig -> ParenT t | ts, _ -> TupT ts } | typ_post iter { IterT ($1, $2) } @@ -434,7 +435,7 @@ nottyp_prim_ : | LPAREN tup_list(nottyp) RPAREN { match $2 with | [], _ -> ParenT (SeqT [] $ $sloc) - | [t], false -> ParenT t + | [t], `Insig -> ParenT t | ts, _ -> TupT ts } nottyp_post : nottyp_post_ { $1 $ $sloc } @@ -513,7 +514,7 @@ exp_hole_ : | MULTIHOLE { HoleE `Rest } | NOTHING { HoleE `None } -(*exp_prim : exp_prim_ { $1 $ $sloc }*) +exp_prim : exp_prim_ { $1 $ $sloc } exp_prim_ : | exp_lit_ { $1 } | exp_var_ { $1 } @@ -523,8 +524,8 @@ exp_prim_ : | LBRACE comma_nl_list(fieldexp) RBRACE { StrE $2 } | LPAREN tup_list(exp_bin) RPAREN { match $2 with - | [], b -> ParenE (SeqE [] $ $sloc, b) - | [e], false -> ParenE (e, false) + | [], signif -> ParenE (SeqE [] $ $sloc, signif) + | [e], `Insig -> ParenE (e, `Insig) | es, _ -> TupE es } | TICK LPAREN exp RPAREN { BrackE (Il.Atom.LParen $$ $loc($2), $3, Il.Atom.RParen $$ $loc($4)) } @@ -533,6 +534,7 @@ exp_prim_ : | TICK LBRACE exp RBRACE { BrackE (Il.Atom.LBrace $$ $loc($2), $3, Il.Atom.RBrace $$ $loc($4)) } | DOLLAR LPAREN arith RPAREN { $3.it } + | FUSEFUSE exp_prim { UnparenE $2 } exp_post : exp_post_ { $1 $ $sloc } exp_post_ : @@ -551,7 +553,7 @@ exp_atom_ : | atomid_lparen exp RPAREN { SeqE [ AtomE (Il.Atom.Atom $1 $$ $loc($1)) $ $loc($1); - ParenE ($2, false) $ $loc($2) + ParenE ($2, `Insig) $ $loc($2) ] } exp_seq : exp_seq_ { $1 $ $sloc } @@ -597,7 +599,7 @@ arith_prim_ : | exp_var_ { $1 } | exp_call_ { $1 } | exp_hole_ { $1 } - | LPAREN arith RPAREN { ParenE ($2, false) } + | LPAREN arith RPAREN { ParenE ($2, `Insig) } | LPAREN arith_bin STAR RPAREN { (* HACK: to allow "(s*)" as arithmetic expression. *) if not (is_post_exp $2) then @@ -707,7 +709,7 @@ sym_prim_ : | LPAREN tup_list(sym) RPAREN { match $2 with | [], _ -> ParenG (SeqG [] $ $sloc) - | [g], false -> ParenG g + | [g], `Insig -> ParenG g | gs, _ -> TupG gs } | DOLLAR LPAREN arith RPAREN { ArithG $3 } diff --git a/spectec/test-frontend/TEST.md b/spectec/test-frontend/TEST.md index 789b218522..779520edbf 100644 --- a/spectec/test-frontend/TEST.md +++ b/spectec/test-frontend/TEST.md @@ -783,15 +783,15 @@ syntax vvtestop = ;; 1-syntax.watsup syntax vunop_(shape : shape) ;; 1-syntax.watsup - syntax vunop_{Jnn : Jnn, N : N}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(N))) = + syntax vunop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | ABS | NEG | POPCNT{Jnn : Jnn} - -- if (Jnn = I8_Jnn) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 8) ;; 1-syntax.watsup - syntax vunop_{Fnn : Fnn, N : N}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(N))) = + syntax vunop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = | ABS | NEG | SQRT @@ -804,7 +804,7 @@ syntax vunop_(shape : shape) ;; 1-syntax.watsup syntax vbinop_(shape : shape) ;; 1-syntax.watsup - syntax vbinop_{Jnn : Jnn, N : N}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(N))) = + syntax vbinop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | ADD | SUB | ADD_SAT{sx : sx}(sx : sx) @@ -824,7 +824,7 @@ syntax vbinop_(shape : shape) ;; 1-syntax.watsup - syntax vbinop_{Fnn : Fnn, N : N}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(N))) = + syntax vbinop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = | ADD | SUB | MUL @@ -836,13 +836,13 @@ syntax vbinop_(shape : shape) ;; 1-syntax.watsup -syntax vtestop_{Jnn : Jnn, N : N}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(N))) = +syntax vtestop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | ALL_TRUE ;; 1-syntax.watsup syntax vrelop_(shape : shape) ;; 1-syntax.watsup - syntax vrelop_{Jnn : Jnn, N : N}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(N))) = + syntax vrelop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | EQ | NE | LT{sx : sx}(sx : sx) @@ -856,7 +856,7 @@ syntax vrelop_(shape : shape) ;; 1-syntax.watsup - syntax vrelop_{Fnn : Fnn, N : N}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(N))) = + syntax vrelop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = | EQ | NE | LT @@ -868,25 +868,25 @@ syntax vrelop_(shape : shape) ;; 1-syntax.watsup syntax vcvtop_(shape_1 : shape, shape_2 : shape) ;; 1-syntax.watsup - syntax vcvtop_{Jnn_1 : Jnn, N_1 : N, Jnn_2 : Jnn, N_2 : N}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(N_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(N_2))) = + syntax vcvtop_{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) = | EXTEND{Jnn_2 : Jnn, Jnn_1 : Jnn} -- if ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) ;; 1-syntax.watsup - syntax vcvtop_{Jnn_1 : Jnn, N_1 : N, Fnn_2 : Fnn, N_2 : N}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(N_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(N_2))) = + syntax vcvtop_{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) = | CONVERT -- if (($sizenn2((Fnn_2 : Fnn <: numtype)) >= $lsizenn1((Jnn_1 : Jnn <: lanetype))) /\ ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32)) ;; 1-syntax.watsup - syntax vcvtop_{Fnn_1 : Fnn, N_1 : N, Jnn_2 : Jnn, N_2 : N}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(N_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(N_2))) = + syntax vcvtop_{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) = | TRUNC_SAT -- if (($sizenn1((Fnn_1 : Fnn <: numtype)) >= $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) ;; 1-syntax.watsup - syntax vcvtop_{Fnn_1 : Fnn, N_1 : N, Fnn_2 : Fnn, N_2 : N}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(N_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(N_2))) = + syntax vcvtop_{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) = | DEMOTE -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) > $sizenn2((Fnn_2 : Fnn <: numtype))) | PROMOTE @@ -909,17 +909,17 @@ syntax zero_{shape_1 : shape, shape_2 : shape}(shape_1, shape_2) = -- if (($lanetype(shape_1) = F64_lanetype) /\ ($lsize($lanetype(shape_2)) = 32)) ;; 1-syntax.watsup -syntax vshiftop_{Jnn : Jnn, N : N}(`%X%`_ishape(Jnn, `%`_dim(N))) = +syntax vshiftop_{Jnn : Jnn, M : M}(`%X%`_ishape(Jnn, `%`_dim(M))) = | SHL | SHR{sx : sx}(sx : sx) ;; 1-syntax.watsup -syntax vextunop_{Jnn : Jnn, N : N}(`%X%`_ishape(Jnn, `%`_dim(N))) = +syntax vextunop_{Jnn : Jnn, M : M}(`%X%`_ishape(Jnn, `%`_dim(M))) = | EXTADD_PAIRWISE -- if ((16 <= $lsizenn((Jnn : Jnn <: lanetype))) /\ ($lsizenn((Jnn : Jnn <: lanetype)) <= 32)) ;; 1-syntax.watsup -syntax vextbinop_{Jnn : Jnn, N : N}(`%X%`_ishape(Jnn, `%`_dim(N))) = +syntax vextbinop_{Jnn : Jnn, M : M}(`%X%`_ishape(Jnn, `%`_dim(M))) = | EXTMUL{half : half}(half : half) | DOT{Jnn : Jnn} -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 32) @@ -942,11 +942,6 @@ syntax blocktype = | _RESULT{valtype? : valtype?}(valtype?{valtype : valtype} : valtype?) | _IDX{funcidx : funcidx}(funcidx : funcidx) -;; 1-syntax.watsup -syntax sz = - | `%`{i : nat}(i : nat) - -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) - ;; 1-syntax.watsup rec { @@ -980,7 +975,7 @@ syntax instr = | RELOP{numtype : numtype, relop_ : relop_(numtype)}(numtype : numtype, relop_ : relop_(numtype)) | CVTOP{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop, sx? : sx?}(numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop, sx?{sx : sx} : sx?) -- if (numtype_1 =/= numtype_2) - | EXTEND{numtype : numtype, n : n}(numtype : numtype, n : n) + | EXTEND{numtype : numtype, N : N}(numtype : numtype, N : N) | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) | VVUNOP{vectype : vectype, vvunop : vvunop}(vectype : vectype, vvunop : vvunop) | VVBINOP{vectype : vectype, vvbinop : vvbinop}(vectype : vectype, vvbinop : vvbinop) @@ -996,10 +991,6 @@ syntax instr = -- if (ishape = `%X%`_ishape(I8_Jnn, `%`_dim(16))) | VSHUFFLE{ishape : ishape, laneidx* : laneidx*}(ishape : ishape, laneidx*{laneidx : laneidx} : laneidx*) -- if ((ishape = `%X%`_ishape(I8_Jnn, `%`_dim(16))) /\ (|laneidx*{laneidx : laneidx}| = 16)) - | VSPLAT{shape : shape}(shape : shape) - | VEXTRACT_LANE{shape : shape, sx? : sx?, laneidx : laneidx, numtype : numtype}(shape : shape, sx?{sx : sx} : sx?, laneidx : laneidx) - -- if (($lanetype(shape) = (numtype : numtype <: lanetype)) <=> (sx?{sx : sx} = ?())) - | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) | VEXTUNOP{ishape_1 : ishape, ishape_2 : ishape, vextunop_ : vextunop_(ishape_1), sx : sx}(ishape_1 : ishape, ishape_2 : ishape, vextunop_ : vextunop_(ishape_1), sx : sx) -- if ($lsize($lanetype((ishape_1 : ishape <: shape))) = (2 * $lsize($lanetype((ishape_2 : ishape <: shape))))) | VEXTBINOP{ishape_1 : ishape, ishape_2 : ishape, vextbinop_ : vextbinop_(ishape_1), sx : sx}(ishape_1 : ishape, ishape_2 : ishape, vextbinop_ : vextbinop_(ishape_1), sx : sx) @@ -1008,6 +999,10 @@ syntax instr = -- if (($lsize($lanetype((ishape_2 : ishape <: shape))) = (2 * $lsize($lanetype((ishape_1 : ishape <: shape))))) /\ ((2 * $lsize($lanetype((ishape_1 : ishape <: shape)))) <= 32)) | VCVTOP{shape_1 : shape, shape_2 : shape, vcvtop_ : vcvtop_(shape_2, shape_1), half_? : half_(shape_2, shape_1)?, sx? : sx?, zero_? : zero_(shape_2, shape_1)?}(shape_1 : shape, shape_2 : shape, vcvtop_ : vcvtop_(shape_2, shape_1), half_?{half_ : half_(shape_2, shape_1)} : half_(shape_2, shape_1)?, sx?{sx : sx} : sx?, zero_?{zero_ : zero_(shape_2, shape_1)} : zero_(shape_2, shape_1)?) -- if ($lanetype(shape_1) =/= $lanetype(shape_2)) + | VSPLAT{shape : shape}(shape : shape) + | VEXTRACT_LANE{shape : shape, sx? : sx?, laneidx : laneidx, numtype : numtype}(shape : shape, sx?{sx : sx} : sx?, laneidx : laneidx) + -- if (($lanetype(shape) = (numtype : numtype <: lanetype)) <=> (sx?{sx : sx} = ?())) + | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) | REF.NULL{heaptype : heaptype}(heaptype : heaptype) | REF.IS_NULL | REF.AS_NON_NULL @@ -1048,14 +1043,14 @@ syntax instr = | TABLE.COPY{tableidx : tableidx}(tableidx : tableidx, tableidx) | TABLE.INIT{tableidx : tableidx, elemidx : elemidx}(tableidx : tableidx, elemidx : elemidx) | ELEM.DROP{elemidx : elemidx}(elemidx : elemidx) - | `LOAD%(_)%?%%`{numtype : numtype, sz? : sz?, sx? : sx?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, (sz, sx)?{sx : sx, sz : sz} : (sz, sx)?, memidx : memidx, memarg : memarg) - -- (if ((numtype = (Inn : Inn <: numtype)) /\ (sz!`%`_sz.0 < $size((Inn : Inn <: numtype)))))?{Inn : Inn, sz : sz} - | STORE{numtype : numtype, sz? : sz?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, sz?{sz : sz} : sz?, memidx : memidx, memarg : memarg) - -- (if ((numtype = (Inn : Inn <: numtype)) /\ (sz!`%`_sz.0 < $size((Inn : Inn <: numtype)))))?{Inn : Inn, sz : sz} + | `LOAD%(_)%?%%`{numtype : numtype, N? : N?, sx? : sx?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, (N, sx)?{N : N, sx : sx} : (N, sx)?, memidx : memidx, memarg : memarg) + -- (if ((numtype = (Inn : Inn <: numtype)) /\ (N < $size((Inn : Inn <: numtype)))))?{Inn : Inn, N : nat} + | STORE{numtype : numtype, N? : N?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, N?{N : N} : N?, memidx : memidx, memarg : memarg) + -- (if ((numtype = (Inn : Inn <: numtype)) /\ (N < $size((Inn : Inn <: numtype)))))?{Inn : Inn, N : nat} | VLOAD{vectype : vectype, vloadop? : vloadop?, memidx : memidx, memarg : memarg}(vectype : vectype, vloadop?{vloadop : vloadop} : vloadop?, memidx : memidx, memarg : memarg) - | VLOAD_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VLOAD_LANE{vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx) | VSTORE{vectype : vectype, memidx : memidx, memarg : memarg}(vectype : vectype, memidx : memidx, memarg : memarg) - | VSTORE_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE_LANE{vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx) | MEMORY.SIZE{memidx : memidx}(memidx : memidx) | MEMORY.GROW{memidx : memidx}(memidx : memidx) | MEMORY.FILL{memidx : memidx}(memidx : memidx) @@ -1064,6 +1059,11 @@ syntax instr = | DATA.DROP{dataidx : dataidx}(dataidx : dataidx) } +;; 1-syntax.watsup +syntax sz = + | `%`{i : nat}(i : nat) + -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) + ;; 1-syntax.watsup syntax expr = instr* @@ -2475,7 +2475,7 @@ syntax admininstr = | RELOP{numtype : numtype, relop_ : relop_(numtype)}(numtype : numtype, relop_ : relop_(numtype)) | CVTOP{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop, sx? : sx?}(numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop, sx?{sx : sx} : sx?) -- if (numtype_1 =/= numtype_2) - | EXTEND{numtype : numtype, n : n}(numtype : numtype, n : n) + | EXTEND{numtype : numtype, N : N}(numtype : numtype, N : N) | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) | VVUNOP{vectype : vectype, vvunop : vvunop}(vectype : vectype, vvunop : vvunop) | VVBINOP{vectype : vectype, vvbinop : vvbinop}(vectype : vectype, vvbinop : vvbinop) @@ -2491,10 +2491,6 @@ syntax admininstr = -- if (ishape = `%X%`_ishape(I8_Jnn, `%`_dim(16))) | VSHUFFLE{ishape : ishape, laneidx* : laneidx*}(ishape : ishape, laneidx*{laneidx : laneidx} : laneidx*) -- if ((ishape = `%X%`_ishape(I8_Jnn, `%`_dim(16))) /\ (|laneidx*{laneidx : laneidx}| = 16)) - | VSPLAT{shape : shape}(shape : shape) - | VEXTRACT_LANE{shape : shape, sx? : sx?, laneidx : laneidx, numtype : numtype}(shape : shape, sx?{sx : sx} : sx?, laneidx : laneidx) - -- if (($lanetype(shape) = (numtype : numtype <: lanetype)) <=> (sx?{sx : sx} = ?())) - | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) | VEXTUNOP{ishape_1 : ishape, ishape_2 : ishape, vextunop_ : vextunop_(ishape_1), sx : sx}(ishape_1 : ishape, ishape_2 : ishape, vextunop_ : vextunop_(ishape_1), sx : sx) -- if ($lsize($lanetype((ishape_1 : ishape <: shape))) = (2 * $lsize($lanetype((ishape_2 : ishape <: shape))))) | VEXTBINOP{ishape_1 : ishape, ishape_2 : ishape, vextbinop_ : vextbinop_(ishape_1), sx : sx}(ishape_1 : ishape, ishape_2 : ishape, vextbinop_ : vextbinop_(ishape_1), sx : sx) @@ -2503,6 +2499,10 @@ syntax admininstr = -- if (($lsize($lanetype((ishape_2 : ishape <: shape))) = (2 * $lsize($lanetype((ishape_1 : ishape <: shape))))) /\ ((2 * $lsize($lanetype((ishape_1 : ishape <: shape)))) <= 32)) | VCVTOP{shape_1 : shape, shape_2 : shape, vcvtop_ : vcvtop_(shape_2, shape_1), half_? : half_(shape_2, shape_1)?, sx? : sx?, zero_? : zero_(shape_2, shape_1)?}(shape_1 : shape, shape_2 : shape, vcvtop_ : vcvtop_(shape_2, shape_1), half_?{half_ : half_(shape_2, shape_1)} : half_(shape_2, shape_1)?, sx?{sx : sx} : sx?, zero_?{zero_ : zero_(shape_2, shape_1)} : zero_(shape_2, shape_1)?) -- if ($lanetype(shape_1) =/= $lanetype(shape_2)) + | VSPLAT{shape : shape}(shape : shape) + | VEXTRACT_LANE{shape : shape, sx? : sx?, laneidx : laneidx, numtype : numtype}(shape : shape, sx?{sx : sx} : sx?, laneidx : laneidx) + -- if (($lanetype(shape) = (numtype : numtype <: lanetype)) <=> (sx?{sx : sx} = ?())) + | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) | REF.NULL{heaptype : heaptype}(heaptype : heaptype) | REF.IS_NULL | REF.AS_NON_NULL @@ -2543,14 +2543,14 @@ syntax admininstr = | TABLE.COPY{tableidx : tableidx}(tableidx : tableidx, tableidx) | TABLE.INIT{tableidx : tableidx, elemidx : elemidx}(tableidx : tableidx, elemidx : elemidx) | ELEM.DROP{elemidx : elemidx}(elemidx : elemidx) - | `LOAD%(_)%?%%`{numtype : numtype, sz? : sz?, sx? : sx?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, (sz, sx)?{sx : sx, sz : sz} : (sz, sx)?, memidx : memidx, memarg : memarg) - -- (if ((numtype = (Inn : Inn <: numtype)) /\ (sz!`%`_sz.0 < $size((Inn : Inn <: numtype)))))?{Inn : Inn, sz : sz} - | STORE{numtype : numtype, sz? : sz?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, sz?{sz : sz} : sz?, memidx : memidx, memarg : memarg) - -- (if ((numtype = (Inn : Inn <: numtype)) /\ (sz!`%`_sz.0 < $size((Inn : Inn <: numtype)))))?{Inn : Inn, sz : sz} + | `LOAD%(_)%?%%`{numtype : numtype, N? : N?, sx? : sx?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, (N, sx)?{N : N, sx : sx} : (N, sx)?, memidx : memidx, memarg : memarg) + -- (if ((numtype = (Inn : Inn <: numtype)) /\ (N < $size((Inn : Inn <: numtype)))))?{Inn : Inn, N : nat} + | STORE{numtype : numtype, N? : N?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, N?{N : N} : N?, memidx : memidx, memarg : memarg) + -- (if ((numtype = (Inn : Inn <: numtype)) /\ (N < $size((Inn : Inn <: numtype)))))?{Inn : Inn, N : nat} | VLOAD{vectype : vectype, vloadop? : vloadop?, memidx : memidx, memarg : memarg}(vectype : vectype, vloadop?{vloadop : vloadop} : vloadop?, memidx : memidx, memarg : memarg) - | VLOAD_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VLOAD_LANE{vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx) | VSTORE{vectype : vectype, memidx : memidx, memarg : memarg}(vectype : vectype, memidx : memidx, memarg : memarg) - | VSTORE_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE_LANE{vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx) | MEMORY.SIZE{memidx : memidx}(memidx : memidx) | MEMORY.GROW{memidx : memidx}(memidx : memidx) | MEMORY.FILL{memidx : memidx}(memidx : memidx) @@ -3795,25 +3795,25 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - ;; 6-typing.watsup:880.1-881.40 - rule vunop{C : context, sh : shape, vunop_sh : vunop_(sh)}: - `%|-%:%`(C, VUNOP_instr(sh, vunop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + ;; 6-typing.watsup:880.1-881.37 + rule vunop{C : context, sh : shape, vunop : vunop_(sh)}: + `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; 6-typing.watsup:883.1-884.47 - rule vbinop{C : context, sh : shape, vbinop_sh : vbinop_(sh)}: - `%|-%:%`(C, VBINOP_instr(sh, vbinop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + ;; 6-typing.watsup:883.1-884.44 + rule vbinop{C : context, sh : shape, vbinop : vbinop_(sh)}: + `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; 6-typing.watsup:886.1-887.43 - rule vtestop{C : context, sh : shape, vtestop_sh : vtestop_(sh)}: - `%|-%:%`(C, VTESTOP_instr(sh, vtestop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + ;; 6-typing.watsup:886.1-887.40 + rule vtestop{C : context, sh : shape, vtestop : vtestop_(sh)}: + `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - ;; 6-typing.watsup:889.1-890.47 - rule vrelop{C : context, sh : shape, vrelop_sh : vrelop_(sh)}: - `%|-%:%`(C, VRELOP_instr(sh, vrelop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + ;; 6-typing.watsup:889.1-890.44 + rule vrelop{C : context, sh : shape, vrelop : vrelop_(sh)}: + `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; 6-typing.watsup:892.1-893.50 - rule vshiftop{C : context, sh : ishape, vshiftop_sh : vshiftop_(sh)}: - `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + ;; 6-typing.watsup:892.1-893.47 + rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_(sh)}: + `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; 6-typing.watsup:895.1-896.33 rule vbitmask{C : context, sh : ishape}: @@ -3962,7 +3962,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; 6-typing.watsup:1025.1-1030.29 rule load{C : context, nt : numtype, n? : n?, sx? : sx?, x : idx, memarg : memarg, mt : memtype, Inn : Inn}: - `%|-%:%`(C, `LOAD%(_)%?%%`_instr(nt, (`%`_sz(n), sx)?{n : nat, sx : sx}, x, memarg), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(C, `LOAD%(_)%?%%`_instr(nt, (n, sx)?{n : N, sx : sx}, x, memarg), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([(nt : numtype <: valtype)]))) -- if (C.MEMS_context[x!`%`_idx.0] = mt) -- if ((2 ^ memarg.ALIGN_memarg!`%`_u32.0) <= ($size(nt) / 8)) -- (if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) <= (n / 8)) /\ ((n / 8) < ($size(nt) / 8))))?{n : nat} @@ -3970,7 +3970,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; 6-typing.watsup:1032.1-1037.29 rule store{C : context, nt : numtype, n? : n?, x : idx, memarg : memarg, mt : memtype, Inn : Inn}: - `%|-%:%`(C, STORE_instr(nt, `%`_sz(n)?{n : nat}, x, memarg), `%->_%%`_instrtype(`%`_resulttype([I32_valtype (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + `%|-%:%`(C, STORE_instr(nt, n?{n : N}, x, memarg), `%->_%%`_instrtype(`%`_resulttype([I32_valtype (nt : numtype <: valtype)]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x!`%`_idx.0] = mt) -- if ((2 ^ memarg.ALIGN_memarg!`%`_u32.0) <= ($size(nt) / 8)) -- (if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) <= (n / 8)) /\ ((n / 8) < ($size(nt) / 8))))?{n : nat} @@ -3996,7 +3996,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; 6-typing.watsup:1054.1-1058.29 rule vload_lane{C : context, n : n, x : idx, memarg : memarg, laneidx : laneidx, mt : memtype}: - `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(n), x, memarg, laneidx), `%->_%%`_instrtype(`%`_resulttype([I32_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, n, x, memarg, laneidx), `%->_%%`_instrtype(`%`_resulttype([I32_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- if (C.MEMS_context[x!`%`_idx.0] = mt) -- if ((2 ^ memarg.ALIGN_memarg!`%`_u32.0) < (n / 8)) -- if (laneidx!`%`_laneidx.0 < (128 / n)) @@ -4009,7 +4009,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; 6-typing.watsup:1065.1-1069.29 rule vstore_lane{C : context, n : n, x : idx, memarg : memarg, laneidx : laneidx, mt : memtype}: - `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(n), x, memarg, laneidx), `%->_%%`_instrtype(`%`_resulttype([I32_valtype V128_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, n, x, memarg, laneidx), `%->_%%`_instrtype(`%`_resulttype([I32_valtype V128_valtype]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x!`%`_idx.0] = mt) -- if ((2 ^ memarg.ALIGN_memarg!`%`_u32.0) < (n / 8)) -- if (laneidx!`%`_laneidx.0 < (128 / n)) @@ -5104,12 +5104,12 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule load-pack-oob{z : state, i : nat, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) `LOAD%(_)%?%%`_admininstr((Inn : Inn <: numtype), ?((`%`_sz(n), sx)), x, ao)]), [TRAP_admininstr]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) `LOAD%(_)%?%%`_admininstr((Inn : Inn <: numtype), ?((n, sx)), x, ao)]), [TRAP_admininstr]) -- if (((i + ao.OFFSET_memarg!`%`_u32.0) + (n / 8)) > |$mem(z, x).BYTES_meminst|) ;; 8-reduction.watsup rule load-pack-val{z : state, i : nat, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN(n)}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) `LOAD%(_)%?%%`_admininstr((Inn : Inn <: numtype), ?((`%`_sz(n), sx)), x, ao)]), [CONST_admininstr((Inn : Inn <: numtype), $ext(n, $size((Inn : Inn <: numtype)), sx, c))]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) `LOAD%(_)%?%%`_admininstr((Inn : Inn <: numtype), ?((n, sx)), x, ao)]), [CONST_admininstr((Inn : Inn <: numtype), $ext(n, $size((Inn : Inn <: numtype)), sx, c))]) -- if ($ibytes(n, c) = $mem(z, x).BYTES_meminst[(i + ao.OFFSET_memarg!`%`_u32.0) : (n / 8)]) ;; 8-reduction.watsup @@ -5160,12 +5160,12 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule vload_lane-oob{z : state, i : nat, c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : nat}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c_1) VLOAD_LANE_admininstr(V128_vectype, `%`_sz(N), x, ao, `%`_laneidx(j))]), [TRAP_admininstr]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c_1) VLOAD_LANE_admininstr(V128_vectype, N, x, ao, `%`_laneidx(j))]), [TRAP_admininstr]) -- if (((i + ao.OFFSET_memarg!`%`_u32.0) + (N / 8)) > |$mem(z, x).BYTES_meminst|) ;; 8-reduction.watsup rule vload_lane-val{z : state, i : nat, c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : nat, c : vec_(V128_Vnn), k : nat, Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c_1) VLOAD_LANE_admininstr(V128_vectype, `%`_sz(N), x, ao, `%`_laneidx(j))]), [VCONST_admininstr(V128_vectype, c)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c_1) VLOAD_LANE_admininstr(V128_vectype, N, x, ao, `%`_laneidx(j))]), [VCONST_admininstr(V128_vectype, c)]) -- if ($ibytes(N, `%`_iN(k)) = $mem(z, x).BYTES_meminst[(i + ao.OFFSET_memarg!`%`_u32.0) : (N / 8)]) -- if (N = $lsize((Jnn : Jnn <: lanetype))) -- if (M = ($vsize(V128_vectype) / N)) @@ -5189,7 +5189,7 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule memory.fill-succ{z : state, i : nat, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) (val : val <: admininstr) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.FILL_admininstr(x)]), [CONST_admininstr(I32_numtype, `%`_num_(i)) (val : val <: admininstr) STORE_admininstr(I32_numtype, ?(`%`_sz(8)), x, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((i + 1))) (val : val <: admininstr) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.FILL_admininstr(x)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) (val : val <: admininstr) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.FILL_admininstr(x)]), [CONST_admininstr(I32_numtype, `%`_num_(i)) (val : val <: admininstr) STORE_admininstr(I32_numtype, ?(8), x, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((i + 1))) (val : val <: admininstr) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.FILL_admininstr(x)]) -- otherwise ;; 8-reduction.watsup @@ -5205,13 +5205,13 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule memory.copy-le{z : state, i_1 : nat, i_2 : nat, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.COPY_admininstr(x_1, x_2)]), [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) `LOAD%(_)%?%%`_admininstr(I32_numtype, ?((`%`_sz(8), U_sx)), x_2, $memarg0) STORE_admininstr(I32_numtype, ?(`%`_sz(8)), x_1, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((i_1 + 1))) CONST_admininstr(I32_numtype, `%`_num_((i_2 + 1))) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.COPY_admininstr(x_1, x_2)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.COPY_admininstr(x_1, x_2)]), [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) `LOAD%(_)%?%%`_admininstr(I32_numtype, ?((8, U_sx)), x_2, $memarg0) STORE_admininstr(I32_numtype, ?(8), x_1, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((i_1 + 1))) CONST_admininstr(I32_numtype, `%`_num_((i_2 + 1))) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.COPY_admininstr(x_1, x_2)]) -- otherwise -- if (i_1 <= i_2) ;; 8-reduction.watsup rule memory.copy-gt{z : state, i_1 : nat, i_2 : nat, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.COPY_admininstr(x_1, x_2)]), [CONST_admininstr(I32_numtype, `%`_num_(((i_1 + n) - 1))) CONST_admininstr(I32_numtype, `%`_num_(((i_2 + n) - 1))) `LOAD%(_)%?%%`_admininstr(I32_numtype, ?((`%`_sz(8), U_sx)), x_2, $memarg0) STORE_admininstr(I32_numtype, ?(`%`_sz(8)), x_1, $memarg0) CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.COPY_admininstr(x_1, x_2)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.COPY_admininstr(x_1, x_2)]), [CONST_admininstr(I32_numtype, `%`_num_(((i_1 + n) - 1))) CONST_admininstr(I32_numtype, `%`_num_(((i_2 + n) - 1))) `LOAD%(_)%?%%`_admininstr(I32_numtype, ?((8, U_sx)), x_2, $memarg0) STORE_admininstr(I32_numtype, ?(8), x_1, $memarg0) CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.COPY_admininstr(x_1, x_2)]) -- otherwise ;; 8-reduction.watsup @@ -5227,7 +5227,7 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule memory.init-succ{z : state, j : nat, i : nat, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(j)) CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.INIT_admininstr(x, y)]), [CONST_admininstr(I32_numtype, `%`_num_(j)) CONST_admininstr(I32_numtype, `%`_num_($data(z, y).BYTES_datainst[i]!`%`_byte.0)) STORE_admininstr(I32_numtype, ?(`%`_sz(8)), x, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((j + 1))) CONST_admininstr(I32_numtype, `%`_num_((i + 1))) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.INIT_admininstr(x, y)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(j)) CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.INIT_admininstr(x, y)]), [CONST_admininstr(I32_numtype, `%`_num_(j)) CONST_admininstr(I32_numtype, `%`_num_($data(z, y).BYTES_datainst[i]!`%`_byte.0)) STORE_admininstr(I32_numtype, ?(8), x, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((j + 1))) CONST_admininstr(I32_numtype, `%`_num_((i + 1))) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.INIT_admininstr(x, y)]) -- otherwise ;; 8-reduction.watsup @@ -5321,12 +5321,12 @@ relation Step: `%~>%`(config, config) ;; 8-reduction.watsup rule store-pack-oob{z : state, i : nat, Inn : Inn, c : num_((Inn : Inn <: numtype)), nt : numtype, n : n, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr((Inn : Inn <: numtype), c) STORE_admininstr(nt, ?(`%`_sz(n)), x, ao)]), `%;%`_config(z, [TRAP_admininstr])) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr((Inn : Inn <: numtype), c) STORE_admininstr(nt, ?(n), x, ao)]), `%;%`_config(z, [TRAP_admininstr])) -- if (((i + ao.OFFSET_memarg!`%`_u32.0) + (n / 8)) > |$mem(z, x).BYTES_meminst|) ;; 8-reduction.watsup rule store-pack-val{z : state, i : nat, Inn : Inn, c : num_((Inn : Inn <: numtype)), nt : numtype, n : n, x : idx, ao : memarg, b* : byte*}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr((Inn : Inn <: numtype), c) STORE_admininstr(nt, ?(`%`_sz(n)), x, ao)]), `%;%`_config($with_mem(z, x, (i + ao.OFFSET_memarg!`%`_u32.0), (n / 8), b*{b : byte}), [])) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr((Inn : Inn <: numtype), c) STORE_admininstr(nt, ?(n), x, ao)]), `%;%`_config($with_mem(z, x, (i + ao.OFFSET_memarg!`%`_u32.0), (n / 8), b*{b : byte}), [])) -- if (b*{b : byte} = $ibytes(n, $wrap($size((Inn : Inn <: numtype)), n, c))) ;; 8-reduction.watsup @@ -5341,12 +5341,12 @@ relation Step: `%~>%`(config, config) ;; 8-reduction.watsup rule vstore_lane-oob{z : state, i : nat, c : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : nat}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c) VSTORE_LANE_admininstr(V128_vectype, `%`_sz(N), x, ao, `%`_laneidx(j))]), `%;%`_config(z, [TRAP_admininstr])) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c) VSTORE_LANE_admininstr(V128_vectype, N, x, ao, `%`_laneidx(j))]), `%;%`_config(z, [TRAP_admininstr])) -- if (((i + ao.OFFSET_memarg!`%`_u32.0) + N) > |$mem(z, x).BYTES_meminst|) ;; 8-reduction.watsup rule vstore_lane-val{z : state, i : nat, c : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : nat, b* : byte*, Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c) VSTORE_LANE_admininstr(V128_vectype, `%`_sz(N), x, ao, `%`_laneidx(j))]), `%;%`_config($with_mem(z, x, (i + ao.OFFSET_memarg!`%`_u32.0), (N / 8), b*{b : byte}), [])) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c) VSTORE_LANE_admininstr(V128_vectype, N, x, ao, `%`_laneidx(j))]), `%;%`_config($with_mem(z, x, (i + ao.OFFSET_memarg!`%`_u32.0), (N / 8), b*{b : byte}), [])) -- if (N = $lsize((Jnn : Jnn <: lanetype))) -- if (M = (128 / N)) -- if (b*{b : byte} = $ibytes(N, `%`_iN($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j]!`%`_lane_.0))) diff --git a/spectec/test-latex/TEST.md b/spectec/test-latex/TEST.md index 0f07f1d833..aec2da89f0 100644 --- a/spectec/test-latex/TEST.md +++ b/spectec/test-latex/TEST.md @@ -47,7 +47,7 @@ $$ $$ \begin{array}{@{}lcl@{}l@{}} -{\mathrm{macros{\scriptstyle1}}} &=& 0 +{\mathrm{macros{\scriptstyle 1}}} &=& 0 &\qquad \mbox{if}~{\mathit{fii}} = \mathsf{fii} \\ &&&\qquad {\land}~{\mathit{faa}} = \mathsf{faa} \\ &&&\qquad {\land}~{\mathit{foo}} = \mathsf{foo} \\ @@ -74,7 +74,7 @@ $$ $$ \begin{array}{@{}lcl@{}l@{}} -{\mathrm{macros{\scriptstyle2}}} &=& 0 +{\mathrm{macros{\scriptstyle 2}}} &=& 0 &\qquad \mbox{if}~{\mathit{ufii}} = \mathsf{ufii} \\ &&&\qquad {\land}~{\mathit{ufaa}} = \mathsf{ufaa} \\ &&&\qquad {\land}~{\mathit{ufoo}} = \mathsf{ufoo} \\ @@ -525,14 +525,14 @@ $$ $$ \begin{array}{@{}lrrl@{}l@{}} -& C &::=& \{ \begin{array}[t]{@{}l@{}l@{}} +& {\mathit{{\scriptstyle C}}} &::=& \{ \begin{array}[t]{@{}l@{}l@{}} \}\end{array} \\ \end{array} $$ -$\boxed{C \vdash {\mathit{parent}} : \mathsf{ok}}$ +$\boxed{{\mathit{{\scriptstyle C}}} \vdash {\mathit{parent}} : \mathsf{ok}}$ -$\boxed{C \vdash {\mathit{parent}} \leq {\mathit{parent}}}$ +$\boxed{{\mathit{{\scriptstyle C}}} \vdash {\mathit{parent}} \leq {\mathit{parent}}}$ $\boxed{{\mathit{parent}} ; {\mathit{child}} \hookrightarrow {\mathit{parent}} ; {\mathit{child}}}$ @@ -540,7 +540,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \mathsf{aa} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{aa} : \mathsf{ok} } \, {[\textsc{\scriptsize Rok}]} \qquad \end{array} @@ -550,7 +550,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash {\mathit{parent}} \leq \mathsf{aa} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{parent}} \leq \mathsf{aa} } \, {[\textsc{\scriptsize Rsub}]} \qquad \end{array} @@ -562,9 +562,9 @@ $$ \end{array} $$ -$\boxed{C \vdash {\mathit{parent}} : \mathsf{ok}}$ +$\boxed{{\mathit{{\scriptstyle C}}} \vdash {\mathit{parent}} : \mathsf{ok}}$ -$\boxed{C \vdash {\mathit{parent}} \leq {\mathit{parent}}}$ +$\boxed{{\mathit{{\scriptstyle C}}} \vdash {\mathit{parent}} \leq {\mathit{parent}}}$ $\boxed{{\mathit{parent}} ; {\mathit{child}} \hookrightarrow {\mathit{parent}} ; {\mathit{child}}}$ @@ -572,7 +572,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \mathsf{aa} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{aa} : \mathsf{ok} } \, {[\textsc{\scriptsize Rok\_macro}]} \qquad \end{array} @@ -582,7 +582,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash {\mathit{parent}} \leq \mathsf{aa} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{parent}} \leq \mathsf{aa} } \, {[\textsc{\scriptsize Rsub\_macro}]} \qquad \end{array} @@ -594,9 +594,9 @@ $$ \end{array} $$ -$\boxed{C \vdash {\mathit{parent}} : \mathsf{ok}}$ +$\boxed{{\mathit{{\scriptstyle C}}} \vdash {\mathit{parent}} : \mathsf{ok}}$ -$\boxed{C \vdash {\mathit{parent}} \leq {\mathit{parent}}}$ +$\boxed{{\mathit{{\scriptstyle C}}} \vdash {\mathit{parent}} \leq {\mathit{parent}}}$ $\boxed{{\mathit{parent}} ; {\mathit{child}} \hookrightarrow {\mathit{parent}} ; {\mathit{child}}}$ @@ -604,7 +604,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \mathsf{aa} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{aa} : \mathsf{ok} } \, {[\textsc{\scriptsize Rok\_nomacro}]} \qquad \end{array} @@ -614,7 +614,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash {\mathit{parent}} \leq \mathsf{aa} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{parent}} \leq \mathsf{aa} } \, {[\textsc{\scriptsize Rsub\_nomacro}]} \qquad \end{array} @@ -1267,8 +1267,8 @@ $ (../src/exe-watsup/main.exe ../spec/wasm-3.0/*.watsup --latex) $$ \begin{array}{@{}lrrl@{}l@{}} -& N &::=& {\mathit{nat}} \\ -& M &::=& {\mathit{nat}} \\ +& {\mathit{{\scriptstyle N}}} &::=& {\mathit{nat}} \\ +& {\mathit{{\scriptstyle M}}} &::=& {\mathit{nat}} \\ & n &::=& {\mathit{nat}} \\ & m &::=& {\mathit{nat}} \\ \end{array} @@ -1278,7 +1278,7 @@ $$ $$ \begin{array}{@{}lcl@{}l@{}} -{\mathrm{Ki}} &=& 1024 \\ +{\mathrm{{\scriptstyle K}i}} &=& 1024 \\ \end{array} $$ @@ -1310,8 +1310,8 @@ $$ $$ \begin{array}{@{}lrrl@{}l@{}} -& {\mathit{list}}(X) &::=& {X^\ast} - &\qquad \mbox{if}~{|{X^\ast}|} < {2^{32}} \\ +& {\mathit{list}}({\mathit{{\scriptstyle X}}}) &::=& {{\mathit{{\scriptstyle X}}}^\ast} + &\qquad \mbox{if}~{|{{\mathit{{\scriptstyle X}}}^\ast}|} < {2^{32}} \\ \end{array} $$ @@ -1323,16 +1323,16 @@ $$ \begin{array}{@{}lrrl@{}l@{}} \mbox{(bit)} & {\mathit{bit}} &::=& 0 ~|~ 1 \\ \mbox{(byte)} & {\mathit{byte}} &::=& \mathtt{0x00} ~|~ \dots ~|~ \mathtt{0xFF} \\ -\mbox{(unsigned integer)} & {u}{N} &::=& 0 ~|~ \dots ~|~ {2^{N}} - 1 \\ -\mbox{(signed integer)} & {s}{N} &::=& {-{2^{N - 1}}} ~|~ \dots ~|~ {-1} ~|~ 0 ~|~ {+1} ~|~ \dots ~|~ {2^{N - 1}} - 1 \\ -\mbox{(integer)} & {i}{N} &::=& {u}{N} \\ -& {\mathit{u{\scriptstyle8}}} &::=& {u}{8} \\ -& {\mathit{u{\scriptstyle16}}} &::=& {u}{16} \\ -& {\mathit{u{\scriptstyle31}}} &::=& {u}{31} \\ -& {\mathit{u{\scriptstyle32}}} &::=& {u}{32} \\ -& {\mathit{u{\scriptstyle64}}} &::=& {u}{64} \\ -& {\mathit{u{\scriptstyle128}}} &::=& {u}{128} \\ -& {\mathit{s{\scriptstyle33}}} &::=& {s}{33} \\ +\mbox{(unsigned integer)} & {u}{{\mathit{{\scriptstyle N}}}} &::=& 0 ~|~ \dots ~|~ {2^{{\mathit{{\scriptstyle N}}}}} - 1 \\ +\mbox{(signed integer)} & {s}{{\mathit{{\scriptstyle N}}}} &::=& {-{2^{{\mathit{{\scriptstyle N}}} - 1}}} ~|~ \dots ~|~ {-1} ~|~ 0 ~|~ {+1} ~|~ \dots ~|~ {2^{{\mathit{{\scriptstyle N}}} - 1}} - 1 \\ +\mbox{(integer)} & {i}{{\mathit{{\scriptstyle N}}}} &::=& {u}{{\mathit{{\scriptstyle N}}}} \\ +& {\mathit{u{\scriptstyle 8}}} &::=& {u}{8} \\ +& {\mathit{u{\scriptstyle 16}}} &::=& {u}{16} \\ +& {\mathit{u{\scriptstyle 31}}} &::=& {u}{31} \\ +& {\mathit{u{\scriptstyle 32}}} &::=& {u}{32} \\ +& {\mathit{u{\scriptstyle 64}}} &::=& {u}{64} \\ +& {\mathit{u{\scriptstyle 128}}} &::=& {u}{128} \\ +& {\mathit{s{\scriptstyle 33}}} &::=& {s}{33} \\ \end{array} $$ @@ -1354,46 +1354,46 @@ $$ $$ \begin{array}{@{}lcl@{}l@{}} -M &=& {\mathrm{signif}}(N) \\ +{\mathit{{\scriptstyle M}}} &=& {\mathrm{signif}}({\mathit{{\scriptstyle N}}}) \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -E &=& {\mathrm{expon}}(N) \\ +{\mathit{{\scriptstyle E}}} &=& {\mathrm{expon}}({\mathit{{\scriptstyle N}}}) \\ \end{array} $$ $$ \begin{array}{@{}lrrl@{}l@{}} -\mbox{(floating-point number)} & {f}{N} &::=& {+{{\mathit{fNmag}}}} ~|~ {-{{\mathit{fNmag}}}} \\ -\mbox{(floating-point magnitude)} & {{\mathit{fNmag}}} &::=& (1 + m \cdot {2^{{-M}}}) \cdot {2^{n}} - &\qquad \mbox{if}~m < {2^{M}} \land 2 - {2^{E - 1}} \leq n \leq {2^{E - 1}} - 1 \\ &&|& -(0 + m \cdot {2^{{-M}}}) \cdot {2^{n}} - &\qquad \mbox{if}~m < {2^{M}} \land 2 - {2^{E - 1}} = n \\ &&|& +\mbox{(floating-point number)} & {f}{{\mathit{{\scriptstyle N}}}} &::=& {+{{\mathit{f{\scriptstyle N}mag}}}} ~|~ {-{{\mathit{f{\scriptstyle N}mag}}}} \\ +\mbox{(floating-point magnitude)} & {{\mathit{f{\scriptstyle N}mag}}} &::=& (1 + m \cdot {2^{{-{\mathit{{\scriptstyle M}}}}}}) \cdot {2^{n}} + &\qquad \mbox{if}~m < {2^{{\mathit{{\scriptstyle M}}}}} \land 2 - {2^{{\mathit{{\scriptstyle E}}} - 1}} \leq n \leq {2^{{\mathit{{\scriptstyle E}}} - 1}} - 1 \\ &&|& +(0 + m \cdot {2^{{-{\mathit{{\scriptstyle M}}}}}}) \cdot {2^{n}} + &\qquad \mbox{if}~m < {2^{{\mathit{{\scriptstyle M}}}}} \land 2 - {2^{{\mathit{{\scriptstyle E}}} - 1}} = n \\ &&|& \infty \\ &&|& {\mathsf{nan}}{(m)} - &\qquad \mbox{if}~1 \leq m < {2^{M}} \\ -& {\mathit{f{\scriptstyle32}}} &::=& {f}{32} \\ -& {\mathit{f{\scriptstyle64}}} &::=& {f}{64} \\ + &\qquad \mbox{if}~1 \leq m < {2^{{\mathit{{\scriptstyle M}}}}} \\ +& {\mathit{f{\scriptstyle 32}}} &::=& {f}{32} \\ +& {\mathit{f{\scriptstyle 64}}} &::=& {f}{64} \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -{+0} &=& {+((0 + 0 \cdot {2^{{-M}}}) \cdot {2^{n}})} \\ +{+0} &=& {+((0 + 0 \cdot {2^{{-{\mathit{{\scriptstyle M}}}}}}) \cdot {2^{n}})} \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -{+1} &=& {+((1 + 1 \cdot {2^{{-M}}}) \cdot {2^{0}})} \\ +{+1} &=& {+((1 + 1 \cdot {2^{{-{\mathit{{\scriptstyle M}}}}}}) \cdot {2^{0}})} \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -{{\mathrm{canon}}}_{N} &=& {2^{{\mathrm{signif}}(N) - 1}} \\ +{{\mathrm{canon}}}_{{\mathit{{\scriptstyle N}}}} &=& {2^{{\mathrm{signif}}({\mathit{{\scriptstyle N}}}) - 1}} \\ \end{array} $$ @@ -1401,7 +1401,7 @@ $$ $$ \begin{array}{@{}lrrl@{}l@{}} -\mbox{(vector)} & {v}{N} &::=& {i}{N} \\ +\mbox{(vector)} & {v}{{\mathit{{\scriptstyle N}}}} &::=& {i}{{\mathit{{\scriptstyle N}}}} \\ \end{array} $$ @@ -1416,7 +1416,7 @@ $$ $$ \begin{array}{@{}lrrl@{}l@{}} \mbox{(name)} & {\mathit{name}} &::=& {{\mathit{char}}^\ast} - &\qquad \mbox{if}~{|{\mathrm{utf{\scriptstyle8}}}({{\mathit{char}}^\ast})|} < {2^{32}} \\ + &\qquad \mbox{if}~{|{\mathrm{utf{\scriptstyle 8}}}({{\mathit{char}}^\ast})|} < {2^{32}} \\ \end{array} $$ @@ -1424,8 +1424,8 @@ $$ $$ \begin{array}{@{}lrrl@{}l@{}} -\mbox{(index)} & {\mathit{idx}} &::=& {\mathit{u{\scriptstyle32}}} \\ -\mbox{(lane index)} & {\mathit{laneidx}} &::=& {\mathit{u{\scriptstyle8}}} \\ +\mbox{(index)} & {\mathit{idx}} &::=& {\mathit{u{\scriptstyle 32}}} \\ +\mbox{(lane index)} & {\mathit{laneidx}} &::=& {\mathit{u{\scriptstyle 8}}} \\ \mbox{(type index)} & {\mathit{typeidx}} &::=& {\mathit{idx}} \\ \mbox{(function index)} & {\mathit{funcidx}} &::=& {\mathit{idx}} \\ \mbox{(global index)} & {\mathit{globalidx}} &::=& {\mathit{idx}} \\ @@ -1445,10 +1445,10 @@ $$ $$ \begin{array}{@{}lrrl@{}l@{}} & {\mathsf{null}^?} &::=& {\mathsf{null}^?} \\ -\mbox{(number type)} & {\mathit{numtype}} &::=& \mathsf{i{\scriptstyle32}} ~|~ \mathsf{i{\scriptstyle64}} ~|~ \mathsf{f{\scriptstyle32}} ~|~ \mathsf{f{\scriptstyle64}} \\ -\mbox{(vector type)} & {\mathit{vectype}} &::=& \mathsf{v{\scriptstyle128}} \\ +\mbox{(number type)} & {\mathit{numtype}} &::=& \mathsf{i{\scriptstyle 32}} ~|~ \mathsf{i{\scriptstyle 64}} ~|~ \mathsf{f{\scriptstyle 32}} ~|~ \mathsf{f{\scriptstyle 64}} \\ +\mbox{(vector type)} & {\mathit{vectype}} &::=& \mathsf{v{\scriptstyle 128}} \\ \mbox{(literal type)} & {\mathit{consttype}} &::=& {\mathit{numtype}} ~|~ {\mathit{vectype}} \\ -& {\mathit{absheaptype}} &::=& \mathsf{any} ~|~ \mathsf{eq} ~|~ \mathsf{i{\scriptstyle31}} ~|~ \mathsf{struct} ~|~ \mathsf{array} ~|~ \mathsf{none} \\ &&|& +& {\mathit{absheaptype}} &::=& \mathsf{any} ~|~ \mathsf{eq} ~|~ \mathsf{i{\scriptstyle 31}} ~|~ \mathsf{struct} ~|~ \mathsf{array} ~|~ \mathsf{none} \\ &&|& \mathsf{func} ~|~ \mathsf{nofunc} \\ &&|& \mathsf{extern} ~|~ \mathsf{noextern} \\ &&|& \mathsf{bot} \\ @@ -1462,10 +1462,10 @@ $$ \mbox{(heap type)} & {\mathit{heaptype}} &::=& {\mathit{absheaptype}} ~|~ {\mathit{typeuse}} \\ \mbox{(reference type)} & {\mathit{reftype}} &::=& \mathsf{ref}~{\mathsf{null}^?}~{\mathit{heaptype}} \\ & {\mathit{valtype}} &::=& {\mathit{numtype}} ~|~ {\mathit{vectype}} ~|~ {\mathit{reftype}} ~|~ \mathsf{bot} \\ -& {\mathsf{i}}{n} &::=& \mathsf{i{\scriptstyle32}} ~|~ \mathsf{i{\scriptstyle64}} \\ -& {\mathsf{f}}{n} &::=& \mathsf{f{\scriptstyle32}} ~|~ \mathsf{f{\scriptstyle64}} \\ -& {\mathsf{v}}{n} &::=& \mathsf{v{\scriptstyle128}} \\ -& t &::=& {\mathsf{i}}{n} ~|~ {\mathsf{f}}{n} ~|~ {\mathsf{v}}{n} \\ +& {\mathsf{i}}{{\mathit{{\scriptstyle N}}}} &::=& \mathsf{i{\scriptstyle 32}} ~|~ \mathsf{i{\scriptstyle 64}} \\ +& {\mathsf{f}}{{\mathit{{\scriptstyle N}}}} &::=& \mathsf{f{\scriptstyle 32}} ~|~ \mathsf{f{\scriptstyle 64}} \\ +& {\mathsf{v}}{{\mathit{{\scriptstyle N}}}} &::=& \mathsf{v{\scriptstyle 128}} \\ +& t &::=& {\mathsf{i}}{{\mathit{{\scriptstyle N}}}} ~|~ {\mathsf{f}}{{\mathit{{\scriptstyle N}}}} ~|~ {\mathsf{v}}{{\mathit{{\scriptstyle N}}}} \\ \end{array} $$ @@ -1483,7 +1483,7 @@ $$ $$ \begin{array}{@{}lcl@{}l@{}} -\mathsf{i{\scriptstyle31}ref} &=& (\mathsf{ref}~\mathsf{null}~\mathsf{i{\scriptstyle31}}) \\ +\mathsf{i{\scriptstyle 31}ref} &=& (\mathsf{ref}~\mathsf{null}~\mathsf{i{\scriptstyle 31}}) \\ \end{array} $$ @@ -1539,12 +1539,12 @@ $$ $$ \begin{array}{@{}lrrl@{}l@{}} -\mbox{(packed type)} & {\mathit{packtype}} &::=& \mathsf{i{\scriptstyle8}} ~|~ \mathsf{i{\scriptstyle16}} \\ +\mbox{(packed type)} & {\mathit{packtype}} &::=& \mathsf{i{\scriptstyle 8}} ~|~ \mathsf{i{\scriptstyle 16}} \\ \mbox{(lane type)} & {\mathit{lanetype}} &::=& {\mathit{numtype}} ~|~ {\mathit{packtype}} \\ \mbox{(storage type)} & {\mathit{storagetype}} &::=& {\mathit{valtype}} ~|~ {\mathit{packtype}} \\ -& {\mathsf{i}}{n} &::=& \mathsf{i{\scriptstyle8}} ~|~ \mathsf{i{\scriptstyle16}} \\ -& {\mathsf{i}}{n} &::=& {\mathsf{i}}{n} ~|~ {\mathsf{i}}{n} \\ -& {\mathsf{i}}{n} &::=& {\mathsf{i}}{n} ~|~ {\mathsf{f}}{n} ~|~ {\mathsf{i}}{n} \\ +& {\mathsf{i}}{{\mathit{{\scriptstyle N}}}} &::=& \mathsf{i{\scriptstyle 8}} ~|~ \mathsf{i{\scriptstyle 16}} \\ +& {\mathsf{i}}{{\mathit{{\scriptstyle N}}}} &::=& {\mathsf{i}}{{\mathit{{\scriptstyle N}}}} ~|~ {\mathsf{i}}{{\mathit{{\scriptstyle N}}}} \\ +& {\mathsf{i}}{{\mathit{{\scriptstyle N}}}} &::=& {\mathsf{i}}{{\mathit{{\scriptstyle N}}}} ~|~ {\mathsf{f}}{{\mathit{{\scriptstyle N}}}} ~|~ {\mathsf{i}}{{\mathit{{\scriptstyle N}}}} \\ \end{array} $$ @@ -1570,10 +1570,10 @@ $$ $$ \begin{array}{@{}lrrl@{}l@{}} -\mbox{(limits)} & {\mathit{limits}} &::=& {}[ {\mathit{u{\scriptstyle32}}} .. {\mathit{u{\scriptstyle32}}} ] \\ +\mbox{(limits)} & {\mathit{limits}} &::=& {}[ {\mathit{u{\scriptstyle 32}}} .. {\mathit{u{\scriptstyle 32}}} ] \\ \mbox{(global type)} & {\mathit{globaltype}} &::=& {\mathsf{mut}^?}~{\mathit{valtype}} \\ \mbox{(table type)} & {\mathit{tabletype}} &::=& {\mathit{limits}}~{\mathit{reftype}} \\ -\mbox{(memory type)} & {\mathit{memtype}} &::=& {\mathit{limits}}~\mathsf{i{\scriptstyle8}} \\ +\mbox{(memory type)} & {\mathit{memtype}} &::=& {\mathit{limits}}~\mathsf{i{\scriptstyle 8}} \\ \mbox{(element type)} & {\mathit{elemtype}} &::=& {\mathit{reftype}} \\ \mbox{(data type)} & {\mathit{datatype}} &::=& \mathsf{ok} \\ \mbox{(external type)} & {\mathit{externtype}} &::=& \mathsf{func}~{\mathit{typeuse}} ~|~ \mathsf{global}~{\mathit{globaltype}} ~|~ \mathsf{table}~{\mathit{tabletype}} ~|~ \mathsf{mem}~{\mathit{memtype}} \\ @@ -1588,45 +1588,45 @@ $$ $$ \begin{array}{@{}lcl@{}l@{}} -n &=& {|{\mathit{nt}}|} \\ +{\mathit{{\scriptstyle N}}} &=& {|{\mathit{nt}}|} \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -n_1 &=& {|{\mathit{nt}}|} \\ +{\mathit{{\scriptstyle N}}}_1 &=& {|{\mathit{nt}}|} \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -n_2 &=& {|{\mathit{nt}}|} \\ +{\mathit{{\scriptstyle N}}}_2 &=& {|{\mathit{nt}}|} \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -n &=& {|{\mathit{lt}}|} \\ +{\mathit{{\scriptstyle N}}} &=& {|{\mathit{lt}}|} \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -n_1 &=& {|{\mathit{lt}}|} \\ +{\mathit{{\scriptstyle N}}}_1 &=& {|{\mathit{lt}}|} \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -n_2 &=& {|{\mathit{lt}}|} \\ +{\mathit{{\scriptstyle N}}}_2 &=& {|{\mathit{lt}}|} \\ \end{array} $$ $$ \begin{array}{@{}lrrl@{}l@{}} -& {{\mathit{num}}}_{{\mathsf{i}}{n}} &::=& {i}{n} \\ -& {{\mathit{num}}}_{{\mathsf{f}}{n}} &::=& {f}{n} \\ -& {{\mathit{pack}}}_{{\mathsf{i}}{n}} &::=& {i}{{|{\mathsf{i}}{n}|}} \\ +& {{\mathit{num}}}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}} &::=& {i}{{\mathit{{\scriptstyle N}}}} \\ +& {{\mathit{num}}}_{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}} &::=& {f}{{\mathit{{\scriptstyle N}}}} \\ +& {{\mathit{pack}}}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}} &::=& {i}{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}} \\ \end{array} $$ @@ -1634,8 +1634,8 @@ $$ \begin{array}{@{}lrrl@{}l@{}} & {{\mathit{lane}}}_{{\mathit{numtype}}} &::=& {{\mathit{num}}}_{{\mathit{numtype}}} \\ & {{\mathit{lane}}}_{{\mathit{packtype}}} &::=& {{\mathit{pack}}}_{{\mathit{packtype}}} \\ -& {{\mathit{lane}}}_{{\mathsf{i}}{n}} &::=& {i}{{|{\mathsf{i}}{n}|}} \\ -& {{\mathit{vec}}}_{{\mathsf{v}}{n}} &::=& {v}{{|{\mathsf{v}}{n}|}} \\ +& {{\mathit{lane}}}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}} &::=& {i}{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}} \\ +& {{\mathit{vec}}}_{{\mathsf{v}}{{\mathit{{\scriptstyle N}}}}} &::=& {v}{{|{\mathsf{v}}{{\mathit{{\scriptstyle N}}}}|}} \\ \end{array} $$ @@ -1664,29 +1664,29 @@ $$ $$ \begin{array}{@{}lrrl@{}l@{}} -& {{\mathit{unop}}}_{{\mathsf{i}}{n}} &::=& \mathsf{clz} ~|~ \mathsf{ctz} ~|~ \mathsf{popcnt} ~|~ \mathsf{extend}~n \\ -& {{\mathit{unop}}}_{{\mathsf{f}}{n}} &::=& \mathsf{abs} ~|~ \mathsf{neg} ~|~ \mathsf{sqrt} ~|~ \mathsf{ceil} ~|~ \mathsf{floor} ~|~ \mathsf{trunc} ~|~ \mathsf{nearest} \\ +& {{\mathit{unop}}}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}} &::=& \mathsf{clz} ~|~ \mathsf{ctz} ~|~ \mathsf{popcnt} ~|~ \mathsf{extend}~n \\ +& {{\mathit{unop}}}_{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}} &::=& \mathsf{abs} ~|~ \mathsf{neg} ~|~ \mathsf{sqrt} ~|~ \mathsf{ceil} ~|~ \mathsf{floor} ~|~ \mathsf{trunc} ~|~ \mathsf{nearest} \\ \end{array} $$ $$ \begin{array}{@{}lrrl@{}l@{}} -& {{\mathit{binop}}}_{{\mathsf{i}}{n}} &::=& \mathsf{add} ~|~ \mathsf{sub} ~|~ \mathsf{mul} ~|~ {\mathsf{div}}{\mathsf{\_}}{{\mathit{sx}}} ~|~ {\mathsf{rem}}{\mathsf{\_}}{{\mathit{sx}}} \\ &&|& +& {{\mathit{binop}}}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}} &::=& \mathsf{add} ~|~ \mathsf{sub} ~|~ \mathsf{mul} ~|~ {\mathsf{div}}{\mathsf{\_}}{{\mathit{sx}}} ~|~ {\mathsf{rem}}{\mathsf{\_}}{{\mathit{sx}}} \\ &&|& \mathsf{and} ~|~ \mathsf{or} ~|~ \mathsf{xor} ~|~ \mathsf{shl} ~|~ {\mathsf{shr}}{\mathsf{\_}}{{\mathit{sx}}} ~|~ \mathsf{rotl} ~|~ \mathsf{rotr} \\ -& {{\mathit{binop}}}_{{\mathsf{f}}{n}} &::=& \mathsf{add} ~|~ \mathsf{sub} ~|~ \mathsf{mul} ~|~ \mathsf{div} ~|~ \mathsf{min} ~|~ \mathsf{max} ~|~ \mathsf{copysign} \\ +& {{\mathit{binop}}}_{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}} &::=& \mathsf{add} ~|~ \mathsf{sub} ~|~ \mathsf{mul} ~|~ \mathsf{div} ~|~ \mathsf{min} ~|~ \mathsf{max} ~|~ \mathsf{copysign} \\ \end{array} $$ $$ \begin{array}{@{}lrrl@{}l@{}} -& {{\mathit{testop}}}_{{\mathsf{i}}{n}} &::=& \mathsf{eqz} \\ +& {{\mathit{testop}}}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}} &::=& \mathsf{eqz} \\ \end{array} $$ $$ \begin{array}{@{}lrrl@{}l@{}} -& {{\mathit{relop}}}_{{\mathsf{i}}{n}} &::=& \mathsf{eq} ~|~ \mathsf{ne} ~|~ {\mathsf{lt}}{\mathsf{\_}}{{\mathit{sx}}} ~|~ {\mathsf{gt}}{\mathsf{\_}}{{\mathit{sx}}} ~|~ {\mathsf{le}}{\mathsf{\_}}{{\mathit{sx}}} ~|~ {\mathsf{ge}}{\mathsf{\_}}{{\mathit{sx}}} \\ -& {{\mathit{relop}}}_{{\mathsf{f}}{n}} &::=& \mathsf{eq} ~|~ \mathsf{ne} ~|~ \mathsf{lt} ~|~ \mathsf{gt} ~|~ \mathsf{le} ~|~ \mathsf{ge} \\ +& {{\mathit{relop}}}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}} &::=& \mathsf{eq} ~|~ \mathsf{ne} ~|~ {\mathsf{lt}}{\mathsf{\_}}{{\mathit{sx}}} ~|~ {\mathsf{gt}}{\mathsf{\_}}{{\mathit{sx}}} ~|~ {\mathsf{le}}{\mathsf{\_}}{{\mathit{sx}}} ~|~ {\mathsf{ge}}{\mathsf{\_}}{{\mathit{sx}}} \\ +& {{\mathit{relop}}}_{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}} &::=& \mathsf{eq} ~|~ \mathsf{ne} ~|~ \mathsf{lt} ~|~ \mathsf{gt} ~|~ \mathsf{le} ~|~ \mathsf{ge} \\ & {\mathit{cvtop}} &::=& \mathsf{convert} ~|~ \mathsf{convert\_sat} ~|~ \mathsf{reinterpret} \\ \end{array} $$ @@ -1695,11 +1695,11 @@ $$ $$ \begin{array}{@{}lrrl@{}l@{}} -\mbox{(dimension)} & {\mathit{dim}} &::=& \mathsf{{\scriptstyle1}} ~|~ \mathsf{{\scriptstyle2}} ~|~ \mathsf{{\scriptstyle4}} ~|~ \mathsf{{\scriptstyle8}} ~|~ \mathsf{{\scriptstyle16}} \\ +\mbox{(dimension)} & {\mathit{dim}} &::=& \mathsf{{\scriptstyle 1}} ~|~ \mathsf{{\scriptstyle 2}} ~|~ \mathsf{{\scriptstyle 4}} ~|~ \mathsf{{\scriptstyle 8}} ~|~ \mathsf{{\scriptstyle 16}} \\ \mbox{(shape)} & {\mathit{shape}} &::=& {{\mathit{lanetype}}}{\mathsf{x}}{{\mathit{dim}}} \\ -\mbox{(shape)} & {\mathit{ishape}} &::=& {{\mathsf{i}}{n}}{\mathsf{x}}{{\mathit{dim}}} \\ -\mbox{(shape)} & {\mathit{fshape}} &::=& {{\mathsf{f}}{n}}{\mathsf{x}}{{\mathit{dim}}} \\ -\mbox{(shape)} & {\mathit{pshape}} &::=& {{\mathsf{i}}{n}}{\mathsf{x}}{{\mathit{dim}}} \\ +\mbox{(shape)} & {\mathit{ishape}} &::=& {{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{dim}}} \\ +\mbox{(shape)} & {\mathit{fshape}} &::=& {{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{dim}}} \\ +\mbox{(shape)} & {\mathit{pshape}} &::=& {{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{dim}}} \\ \end{array} $$ @@ -1714,94 +1714,94 @@ $$ $$ \begin{array}{@{}lrrl@{}l@{}} -& {{\mathit{vunop}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}} &::=& \mathsf{abs} ~|~ \mathsf{neg} \\ &&|& +& {{\mathit{vunop}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle M}}}}} &::=& \mathsf{abs} ~|~ \mathsf{neg} \\ &&|& \mathsf{popcnt} - &\qquad \mbox{if}~{\mathsf{i}}{n} = \mathsf{i{\scriptstyle8}} \\ -& {{\mathit{vunop}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}} &::=& \mathsf{abs} ~|~ \mathsf{neg} ~|~ \mathsf{sqrt} ~|~ \mathsf{ceil} ~|~ \mathsf{floor} ~|~ \mathsf{trunc} ~|~ \mathsf{nearest} \\ + &\qquad \mbox{if}~{\mathit{{\scriptstyle N}}} = \mathsf{{\scriptstyle 8}} \\ +& {{\mathit{vunop}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle M}}}}} &::=& \mathsf{abs} ~|~ \mathsf{neg} ~|~ \mathsf{sqrt} ~|~ \mathsf{ceil} ~|~ \mathsf{floor} ~|~ \mathsf{trunc} ~|~ \mathsf{nearest} \\ \end{array} $$ $$ \begin{array}{@{}lrrl@{}l@{}} -& {{\mathit{vbinop}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}} &::=& \mathsf{add} \\ &&|& +& {{\mathit{vbinop}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle M}}}}} &::=& \mathsf{add} \\ &&|& \mathsf{sub} \\ &&|& {\mathsf{add\_sat}}{\mathsf{\_}}{{\mathit{sx}}} - &\qquad \mbox{if}~n \leq \mathsf{{\scriptstyle16}} \\ &&|& + &\qquad \mbox{if}~{\mathit{{\scriptstyle N}}} \leq \mathsf{{\scriptstyle 16}} \\ &&|& {\mathsf{sub\_sat}}{\mathsf{\_}}{{\mathit{sx}}} - &\qquad \mbox{if}~n \leq \mathsf{{\scriptstyle16}} \\ &&|& + &\qquad \mbox{if}~{\mathit{{\scriptstyle N}}} \leq \mathsf{{\scriptstyle 16}} \\ &&|& \mathsf{mul} - &\qquad \mbox{if}~n \geq \mathsf{{\scriptstyle16}} \\ &&|& + &\qquad \mbox{if}~{\mathit{{\scriptstyle N}}} \geq \mathsf{{\scriptstyle 16}} \\ &&|& \mathsf{avgr\_u} - &\qquad \mbox{if}~n \leq \mathsf{{\scriptstyle16}} \\ &&|& -\mathsf{q{\scriptstyle15}mulr\_sat\_s} - &\qquad \mbox{if}~n = \mathsf{{\scriptstyle16}} \\ &&|& + &\qquad \mbox{if}~{\mathit{{\scriptstyle N}}} \leq \mathsf{{\scriptstyle 16}} \\ &&|& +\mathsf{q{\scriptstyle 15}mulr\_sat\_s} + &\qquad \mbox{if}~{\mathit{{\scriptstyle N}}} = \mathsf{{\scriptstyle 16}} \\ &&|& {\mathsf{min}}{\mathsf{\_}}{{\mathit{sx}}} - &\qquad \mbox{if}~n \leq \mathsf{{\scriptstyle32}} \\ &&|& + &\qquad \mbox{if}~{\mathit{{\scriptstyle N}}} \leq \mathsf{{\scriptstyle 32}} \\ &&|& {\mathsf{max}}{\mathsf{\_}}{{\mathit{sx}}} - &\qquad \mbox{if}~n \leq \mathsf{{\scriptstyle32}} \\ -& {{\mathit{vbinop}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}} &::=& \mathsf{add} ~|~ \mathsf{sub} ~|~ \mathsf{mul} ~|~ \mathsf{div} ~|~ \mathsf{min} ~|~ \mathsf{max} ~|~ \mathsf{pmin} ~|~ \mathsf{pmax} \\ + &\qquad \mbox{if}~{\mathit{{\scriptstyle N}}} \leq \mathsf{{\scriptstyle 32}} \\ +& {{\mathit{vbinop}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle M}}}}} &::=& \mathsf{add} ~|~ \mathsf{sub} ~|~ \mathsf{mul} ~|~ \mathsf{div} ~|~ \mathsf{min} ~|~ \mathsf{max} ~|~ \mathsf{pmin} ~|~ \mathsf{pmax} \\ \end{array} $$ $$ \begin{array}{@{}lrrl@{}l@{}} -& {{\mathit{vtestop}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}} &::=& \mathsf{all\_true} \\ +& {{\mathit{vtestop}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle M}}}}} &::=& \mathsf{all\_true} \\ \end{array} $$ $$ \begin{array}{@{}lrrl@{}l@{}} -& {{\mathit{vrelop}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}} &::=& \mathsf{eq} ~|~ \mathsf{ne} \\ &&|& +& {{\mathit{vrelop}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle M}}}}} &::=& \mathsf{eq} ~|~ \mathsf{ne} \\ &&|& {\mathsf{lt}}{\mathsf{\_}}{{\mathit{sx}}} - &\qquad \mbox{if}~n \neq \mathsf{{\scriptstyle64}} \lor {\mathit{sx}} = \mathsf{s} \\ &&|& + &\qquad \mbox{if}~{\mathit{{\scriptstyle N}}} \neq \mathsf{{\scriptstyle 64}} \lor {\mathit{sx}} = \mathsf{s} \\ &&|& {\mathsf{gt}}{\mathsf{\_}}{{\mathit{sx}}} - &\qquad \mbox{if}~n \neq \mathsf{{\scriptstyle64}} \lor {\mathit{sx}} = \mathsf{s} \\ &&|& + &\qquad \mbox{if}~{\mathit{{\scriptstyle N}}} \neq \mathsf{{\scriptstyle 64}} \lor {\mathit{sx}} = \mathsf{s} \\ &&|& {\mathsf{le}}{\mathsf{\_}}{{\mathit{sx}}} - &\qquad \mbox{if}~n \neq \mathsf{{\scriptstyle64}} \lor {\mathit{sx}} = \mathsf{s} \\ &&|& + &\qquad \mbox{if}~{\mathit{{\scriptstyle N}}} \neq \mathsf{{\scriptstyle 64}} \lor {\mathit{sx}} = \mathsf{s} \\ &&|& {\mathsf{ge}}{\mathsf{\_}}{{\mathit{sx}}} - &\qquad \mbox{if}~n \neq \mathsf{{\scriptstyle64}} \lor {\mathit{sx}} = \mathsf{s} \\ -& {{\mathit{vrelop}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}} &::=& \mathsf{eq} ~|~ \mathsf{ne} ~|~ \mathsf{lt} ~|~ \mathsf{gt} ~|~ \mathsf{le} ~|~ \mathsf{ge} \\ + &\qquad \mbox{if}~{\mathit{{\scriptstyle N}}} \neq \mathsf{{\scriptstyle 64}} \lor {\mathit{sx}} = \mathsf{s} \\ +& {{\mathit{vrelop}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle M}}}}} &::=& \mathsf{eq} ~|~ \mathsf{ne} ~|~ \mathsf{lt} ~|~ \mathsf{gt} ~|~ \mathsf{le} ~|~ \mathsf{ge} \\ \end{array} $$ $$ \begin{array}{@{}lrrl@{}l@{}} -& {{\mathit{vcvtop}}}_{{{{\mathsf{i}}{n}}_1}{\mathsf{x}}{N_1}}({{{\mathsf{i}}{n}}_2}{\mathsf{x}}{N_2}) &::=& \mathsf{extend} - &\qquad \mbox{if}~n_2 = 2 \cdot n_1 \\ -& {{\mathit{vcvtop}}}_{{{{\mathsf{i}}{n}}_1}{\mathsf{x}}{N_1}}({{{\mathsf{f}}{n}}_2}{\mathsf{x}}{N_2}) &::=& \mathsf{convert} - &\qquad \mbox{if}~n_2 \geq n_1 = 32 \\ -& {{\mathit{vcvtop}}}_{{{{\mathsf{f}}{n}}_1}{\mathsf{x}}{N_1}}({{{\mathsf{i}}{n}}_2}{\mathsf{x}}{N_2}) &::=& \mathsf{trunc\_sat} - &\qquad \mbox{if}~n_1 \geq n_2 = 32 \\ -& {{\mathit{vcvtop}}}_{{{{\mathsf{f}}{n}}_1}{\mathsf{x}}{N_1}}({{{\mathsf{f}}{n}}_2}{\mathsf{x}}{N_2}) &::=& \mathsf{demote} - &\qquad \mbox{if}~n_1 > n_2 \\ &&|& +& {{\mathit{vcvtop}}}_{{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_1}{\mathsf{x}}{{\mathit{{\scriptstyle M}}}_1}, {{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_2}{\mathsf{x}}{{\mathit{{\scriptstyle M}}}_2}} &::=& \mathsf{extend} + &\qquad \mbox{if}~{\mathit{{\scriptstyle N}}}_2 = 2 \cdot {\mathit{{\scriptstyle N}}}_1 \\ +& {{\mathit{vcvtop}}}_{{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_1}{\mathsf{x}}{{\mathit{{\scriptstyle M}}}_1}, {{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}_2}{\mathsf{x}}{{\mathit{{\scriptstyle M}}}_2}} &::=& \mathsf{convert} + &\qquad \mbox{if}~{\mathit{{\scriptstyle N}}}_2 \geq {\mathit{{\scriptstyle N}}}_1 = \mathsf{{\scriptstyle 32}} \\ +& {{\mathit{vcvtop}}}_{{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}_1}{\mathsf{x}}{{\mathit{{\scriptstyle M}}}_1}, {{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_2}{\mathsf{x}}{{\mathit{{\scriptstyle M}}}_2}} &::=& \mathsf{trunc\_sat} + &\qquad \mbox{if}~{\mathit{{\scriptstyle N}}}_1 \geq {\mathit{{\scriptstyle N}}}_2 = \mathsf{{\scriptstyle 32}} \\ +& {{\mathit{vcvtop}}}_{{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}_1}{\mathsf{x}}{{\mathit{{\scriptstyle M}}}_1}, {{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}_2}{\mathsf{x}}{{\mathit{{\scriptstyle M}}}_2}} &::=& \mathsf{demote} + &\qquad \mbox{if}~{\mathit{{\scriptstyle N}}}_1 > {\mathit{{\scriptstyle N}}}_2 \\ &&|& \mathsf{promote} - &\qquad \mbox{if}~n_1 < n_2 \\ + &\qquad \mbox{if}~{\mathit{{\scriptstyle N}}}_1 < {\mathit{{\scriptstyle N}}}_2 \\ \mbox{(lane part)} & {\mathit{half}} &::=& \mathsf{low} ~|~ \mathsf{high} \\ & {{\mathit{half}}}_{{\mathit{shape}}_1}({\mathit{shape}}_2) &::=& {\mathit{half}} - &\qquad \mbox{if}~{\mathrm{lanetype}}({\mathit{shape}}_1) = {\mathit{imm}}_1 \land {\mathrm{lanetype}}({\mathit{shape}}_2) = {\mathit{imm}}_2 \lor {\mathrm{lanetype}}({\mathit{shape}}_2) = \mathsf{f{\scriptstyle64}} \land {|{\mathrm{lanetype}}({\mathit{shape}}_1)|} = 32 \\ + &\qquad \mbox{if}~{\mathrm{lanetype}}({\mathit{shape}}_1) = {\mathit{imm}}_1 \land {\mathrm{lanetype}}({\mathit{shape}}_2) = {\mathit{imm}}_2 \lor {\mathrm{lanetype}}({\mathit{shape}}_2) = \mathsf{f{\scriptstyle 64}} \land {|{\mathrm{lanetype}}({\mathit{shape}}_1)|} = \mathsf{{\scriptstyle 32}} \\ & {{\mathit{zero}}}_{{\mathit{shape}}_1}({\mathit{shape}}_2) &::=& \mathsf{zero} - &\qquad \mbox{if}~{\mathrm{lanetype}}({\mathit{shape}}_1) = \mathsf{f{\scriptstyle64}} \land {|{\mathrm{lanetype}}({\mathit{shape}}_2)|} = 32 \\ + &\qquad \mbox{if}~{\mathrm{lanetype}}({\mathit{shape}}_1) = \mathsf{f{\scriptstyle 64}} \land {|{\mathrm{lanetype}}({\mathit{shape}}_2)|} = \mathsf{{\scriptstyle 32}} \\ \end{array} $$ $$ \begin{array}{@{}lrrl@{}l@{}} -& {{\mathit{vshiftop}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}} &::=& \mathsf{shl} ~|~ {\mathsf{shr}}{\mathsf{\_}}{{\mathit{sx}}} \\ +& {{\mathit{vshiftop}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle M}}}}} &::=& \mathsf{shl} ~|~ {\mathsf{shr}}{\mathsf{\_}}{{\mathit{sx}}} \\ \end{array} $$ $$ \begin{array}{@{}lrrl@{}l@{}} -& {{\mathit{vextunop}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}} &::=& \mathsf{extadd\_pairwise} - &\qquad \mbox{if}~\mathsf{{\scriptstyle16}} \leq n \leq \mathsf{{\scriptstyle32}} \\ +& {{\mathit{vextunop}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle M}}}}} &::=& \mathsf{extadd\_pairwise} + &\qquad \mbox{if}~\mathsf{{\scriptstyle 16}} \leq {\mathit{{\scriptstyle N}}} \leq \mathsf{{\scriptstyle 32}} \\ \end{array} $$ $$ \begin{array}{@{}lrrl@{}l@{}} -& {{\mathit{vextbinop}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}} &::=& {\mathsf{extmul}}{\mathsf{\_}}{{\mathit{half}}} \\ &&|& +& {{\mathit{vextbinop}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle M}}}}} &::=& {\mathsf{extmul}}{\mathsf{\_}}{{\mathit{half}}} \\ &&|& \mathsf{dot} - &\qquad \mbox{if}~n = \mathsf{{\scriptstyle32}} \\ + &\qquad \mbox{if}~{\mathit{{\scriptstyle N}}} = \mathsf{{\scriptstyle 32}} \\ \end{array} $$ @@ -1810,15 +1810,15 @@ $$ $$ \begin{array}{@{}lrrl@{}l@{}} \mbox{(memory argument)} & {\mathit{memarg}} &::=& \{ \begin{array}[t]{@{}l@{}l@{}} -\mathsf{align}~{\mathit{u{\scriptstyle32}}},\; \mathsf{offset}~{\mathit{u{\scriptstyle32}}} \}\end{array} \\ +\mathsf{align}~{\mathit{u{\scriptstyle 32}}},\; \mathsf{offset}~{\mathit{u{\scriptstyle 32}}} \}\end{array} \\ \end{array} $$ $$ \begin{array}{@{}lrrl@{}l@{}} -& {\mathit{vloadop}} &::=& {N}{\mathsf{x}}{M}{\mathsf{\_}}{{\mathit{sx}}} \\ &&|& -{N}{\mathsf{\_}}{\mathsf{splat}} \\ &&|& -{N}{\mathsf{\_}}{\mathsf{zero}} \\ +& {\mathit{vloadop}} &::=& {{\mathit{{\scriptstyle N}}}}{\mathsf{x}}{{\mathit{{\scriptstyle M}}}}{\mathsf{\_}}{{\mathit{sx}}} \\ &&|& +{{\mathit{{\scriptstyle N}}}}{\mathsf{\_}}{\mathsf{splat}} \\ &&|& +{{\mathit{{\scriptstyle N}}}}{\mathsf{\_}}{\mathsf{zero}} \\ \end{array} $$ @@ -1861,7 +1861,7 @@ $$ {\mathit{numtype}} {.} {{\mathit{relop}}}_{{\mathit{numtype}}} \\ &&|& {\mathit{numtype}}_1 {.} {{\mathit{cvtop}}}{\mathsf{\_}}{{\mathit{numtype}}_2} &\qquad \mbox{if}~{\mathit{numtype}}_1 \neq {\mathit{numtype}}_2 \\ &&|& -{{\mathit{numtype}}{.}\mathsf{extend}}{n}{\mathsf{\_}}{\mathsf{s}} \\ &&|& +{{\mathit{numtype}}{.}\mathsf{extend}}{{\mathit{{\scriptstyle N}}}}{\mathsf{\_}}{\mathsf{s}} \\ &&|& {\mathit{vectype}}{.}\mathsf{const}~{{\mathit{vec}}}_{{\mathit{vectype}}} \\ &&|& {\mathit{vectype}} {.} {\mathit{vvunop}} \\ &&|& {\mathit{vectype}} {.} {\mathit{vvbinop}} \\ &&|& @@ -1874,21 +1874,21 @@ $$ {\mathit{ishape}} {.} {{\mathit{vshiftop}}}_{{\mathit{ishape}}} \\ &&|& {\mathit{ishape}}{.}\mathsf{bitmask} \\ &&|& {\mathit{ishape}}{.}\mathsf{swizzle} - &\qquad \mbox{if}~{\mathit{ishape}} = {\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{\mathsf{{\scriptstyle16}}} \\ &&|& + &\qquad \mbox{if}~{\mathit{ishape}} = {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{\mathsf{{\scriptstyle 16}}} \\ &&|& {\mathit{ishape}}{.}\mathsf{shuffle}~{{\mathit{laneidx}}^\ast} - &\qquad \mbox{if}~{\mathit{ishape}} = {\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{\mathsf{{\scriptstyle16}}} \land {|{{\mathit{laneidx}}^\ast}|} = 16 \\ &&|& -{\mathit{shape}}{.}\mathsf{splat} \\ &&|& -{{\mathit{shape}}{.}\mathsf{extract\_lane}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~{\mathit{laneidx}} - &\qquad \mbox{if}~{\mathrm{lanetype}}({\mathit{shape}}) = {\mathit{numtype}} \Leftrightarrow {{\mathit{sx}}^?} = \epsilon \\ &&|& -{\mathit{shape}}{.}\mathsf{replace\_lane}~{\mathit{laneidx}} \\ &&|& + &\qquad \mbox{if}~{\mathit{ishape}} = {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{\mathsf{{\scriptstyle 16}}} \land {|{{\mathit{laneidx}}^\ast}|} = \mathsf{{\scriptstyle 16}} \\ &&|& {\mathit{ishape}}_1 {.} {{{\mathit{vextunop}}}_{{\mathit{ishape}}_1}}{\mathsf{\_}}{{\mathit{ishape}}_2}{\mathsf{\_}}{{\mathit{sx}}} &\qquad \mbox{if}~{|{\mathrm{lanetype}}({\mathit{ishape}}_1)|} = 2 \cdot {|{\mathrm{lanetype}}({\mathit{ishape}}_2)|} \\ &&|& {\mathit{ishape}}_1 {.} {{{\mathit{vextbinop}}}_{{\mathit{ishape}}_1}}{\mathsf{\_}}{{\mathit{ishape}}_2}{\mathsf{\_}}{{\mathit{sx}}} &\qquad \mbox{if}~{|{\mathrm{lanetype}}({\mathit{ishape}}_1)|} = 2 \cdot {|{\mathrm{lanetype}}({\mathit{ishape}}_2)|} \\ &&|& {{\mathit{ishape}}_1{.}\mathsf{narrow}}{\mathsf{\_}}{{\mathit{ishape}}_2}{\mathsf{\_}}{{\mathit{sx}}} - &\qquad \mbox{if}~{|{\mathrm{lanetype}}({\mathit{ishape}}_2)|} = 2 \cdot {|{\mathrm{lanetype}}({\mathit{ishape}}_1)|} \leq 32 \\ &&|& -{\mathit{shape}}_1 {.} {{{\mathit{vcvtop}}}_{{\mathit{shape}}_2}({\mathit{shape}}_1)}{\mathsf{\_}}{{\mathit{shape}}_2} + &\qquad \mbox{if}~{|{\mathrm{lanetype}}({\mathit{ishape}}_2)|} = 2 \cdot {|{\mathrm{lanetype}}({\mathit{ishape}}_1)|} \leq \mathsf{{\scriptstyle 32}} \\ &&|& +{\mathit{shape}}_1 {.} {{{\mathit{vcvtop}}}_{{\mathit{shape}}_2, {\mathit{shape}}_1}}{\mathsf{\_}}{{\mathit{shape}}_2} &\qquad \mbox{if}~{\mathrm{lanetype}}({\mathit{shape}}_1) \neq {\mathrm{lanetype}}({\mathit{shape}}_2) \\ &&|& +{\mathit{shape}}{.}\mathsf{splat} \\ &&|& +{{\mathit{shape}}{.}\mathsf{extract\_lane}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~{\mathit{laneidx}} + &\qquad \mbox{if}~{\mathrm{lanetype}}({\mathit{shape}}) = {\mathit{numtype}} \Leftrightarrow {{\mathit{sx}}^?} = \epsilon \\ &&|& +{\mathit{shape}}{.}\mathsf{replace\_lane}~{\mathit{laneidx}} \\ &&|& \mathsf{ref.null}~{\mathit{heaptype}} \\ &&|& \mathsf{ref.is\_null} \\ &&|& \mathsf{ref.as\_non\_null} \\ &&|& @@ -1896,15 +1896,15 @@ $$ \mathsf{ref.test}~{\mathit{reftype}} \\ &&|& \mathsf{ref.cast}~{\mathit{reftype}} \\ &&|& \mathsf{ref.func}~{\mathit{funcidx}} \\ &&|& -\mathsf{ref.i{\scriptstyle31}} \\ &&|& -{\mathsf{i{\scriptstyle31}.get}}{\mathsf{\_}}{{\mathit{sx}}} \\ &&|& +\mathsf{ref.i{\scriptstyle 31}} \\ &&|& +{\mathsf{i{\scriptstyle 31}.get}}{\mathsf{\_}}{{\mathit{sx}}} \\ &&|& \mathsf{struct.new}~{\mathit{typeidx}} \\ &&|& \mathsf{struct.new\_default}~{\mathit{typeidx}} \\ &&|& -{\mathsf{struct.get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~{\mathit{typeidx}}~{\mathit{u{\scriptstyle32}}} \\ &&|& -\mathsf{struct.set}~{\mathit{typeidx}}~{\mathit{u{\scriptstyle32}}} \\ &&|& +{\mathsf{struct.get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~{\mathit{typeidx}}~{\mathit{u{\scriptstyle 32}}} \\ &&|& +\mathsf{struct.set}~{\mathit{typeidx}}~{\mathit{u{\scriptstyle 32}}} \\ &&|& \mathsf{array.new}~{\mathit{typeidx}} \\ &&|& \mathsf{array.new\_default}~{\mathit{typeidx}} \\ &&|& -\mathsf{array.new\_fixed}~{\mathit{typeidx}}~{\mathit{u{\scriptstyle32}}} \\ &&|& +\mathsf{array.new\_fixed}~{\mathit{typeidx}}~{\mathit{u{\scriptstyle 32}}} \\ &&|& \mathsf{array.new\_data}~{\mathit{typeidx}}~{\mathit{dataidx}} \\ &&|& \mathsf{array.new\_elem}~{\mathit{typeidx}}~{\mathit{elemidx}} \\ &&|& {\mathsf{array.get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~{\mathit{typeidx}} \\ &&|& @@ -1930,16 +1930,16 @@ $$ \mathsf{table.init}~{\mathit{tableidx}}~{\mathit{elemidx}} \\ &&|& \mathsf{elem.drop}~{\mathit{elemidx}} \\ &&|& \dots \\ -\mbox{(pack size)} & {\mathit{sz}} &::=& \mathsf{{\scriptstyle8}} ~|~ \mathsf{{\scriptstyle16}} ~|~ \mathsf{{\scriptstyle32}} ~|~ \mathsf{{\scriptstyle64}} \\ +\mbox{(pack size)} & {\mathit{sz}} &::=& \mathsf{{\scriptstyle 8}} ~|~ \mathsf{{\scriptstyle 16}} ~|~ \mathsf{{\scriptstyle 32}} ~|~ \mathsf{{\scriptstyle 64}} \\ \mbox{(instruction)} & {\mathit{instr}} &::=& \dots \\ &&|& -{{\mathit{numtype}}{.}\mathsf{load}}{{({{\mathit{sz}}}{\mathsf{\_}}{{\mathit{sx}}})^?}}~{\mathit{memidx}}~{\mathit{memarg}} - &\qquad \mbox{if}~({\mathit{numtype}} = {\mathsf{i}}{n} \land {\mathit{sz}} < {|{\mathsf{i}}{n}|})^? \\ &&|& -{{\mathit{numtype}}{.}\mathsf{store}}{{{\mathit{sz}}^?}}~{\mathit{memidx}}~{\mathit{memarg}} - &\qquad \mbox{if}~({\mathit{numtype}} = {\mathsf{i}}{n} \land {\mathit{sz}} < {|{\mathsf{i}}{n}|})^? \\ &&|& +{{\mathit{numtype}}{.}\mathsf{load}}{{({{\mathit{{\scriptstyle N}}}}{\mathsf{\_}}{{\mathit{sx}}})^?}}~{\mathit{memidx}}~{\mathit{memarg}} + &\qquad \mbox{if}~({\mathit{numtype}} = {\mathsf{i}}{{\mathit{{\scriptstyle N}}}} \land {\mathit{{\scriptstyle N}}} < {|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|})^? \\ &&|& +{{\mathit{numtype}}{.}\mathsf{store}}{{{\mathit{{\scriptstyle N}}}^?}}~{\mathit{memidx}}~{\mathit{memarg}} + &\qquad \mbox{if}~({\mathit{numtype}} = {\mathsf{i}}{{\mathit{{\scriptstyle N}}}} \land {\mathit{{\scriptstyle N}}} < {|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|})^? \\ &&|& {{\mathit{vectype}}{.}\mathsf{load}}{{{\mathit{vloadop}}^?}}~{\mathit{memidx}}~{\mathit{memarg}} \\ &&|& -{{\mathit{vectype}}{.}\mathsf{load}}{{\mathit{sz}}}{\mathsf{\_}}{\mathsf{lane}}~{\mathit{memidx}}~{\mathit{memarg}}~{\mathit{laneidx}} \\ &&|& +{{\mathit{vectype}}{.}\mathsf{load}}{{\mathit{{\scriptstyle N}}}}{\mathsf{\_}}{\mathsf{lane}}~{\mathit{memidx}}~{\mathit{memarg}}~{\mathit{laneidx}} \\ &&|& {\mathit{vectype}}{.}\mathsf{store}~{\mathit{memidx}}~{\mathit{memarg}} \\ &&|& -{{\mathit{vectype}}{.}\mathsf{store}}{{\mathit{sz}}}{\mathsf{\_}}{\mathsf{lane}}~{\mathit{memidx}}~{\mathit{memarg}}~{\mathit{laneidx}} \\ &&|& +{{\mathit{vectype}}{.}\mathsf{store}}{{\mathit{{\scriptstyle N}}}}{\mathsf{\_}}{\mathsf{lane}}~{\mathit{memidx}}~{\mathit{memarg}}~{\mathit{laneidx}} \\ &&|& \mathsf{memory.size}~{\mathit{memidx}} \\ &&|& \mathsf{memory.grow}~{\mathit{memidx}} \\ &&|& \mathsf{memory.fill}~{\mathit{memidx}} \\ &&|& @@ -1986,16 +1986,16 @@ $$ $$ \begin{array}{@{}lcl@{}l@{}} \epsilon \setminus {y^\ast} &=& \epsilon \\ -x_1~{x^\ast} \setminus {y^\ast} &=& {\mathrm{setminus{\scriptstyle1}}}(x_1, {y^\ast})~{x^\ast} \setminus {y^\ast} \\ +x_1~{x^\ast} \setminus {y^\ast} &=& {\mathrm{setminus{\scriptstyle 1}}}(x_1, {y^\ast})~{x^\ast} \setminus {y^\ast} \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -{\mathrm{setminus{\scriptstyle1}}}(x, \epsilon) &=& x \\ -{\mathrm{setminus{\scriptstyle1}}}(x, y_1~{y^\ast}) &=& \epsilon +{\mathrm{setminus{\scriptstyle 1}}}(x, \epsilon) &=& x \\ +{\mathrm{setminus{\scriptstyle 1}}}(x, y_1~{y^\ast}) &=& \epsilon &\qquad \mbox{if}~x = y_1 \\ -{\mathrm{setminus{\scriptstyle1}}}(x, y_1~{y^\ast}) &=& {\mathrm{setminus{\scriptstyle1}}}(x, {y^\ast}) +{\mathrm{setminus{\scriptstyle 1}}}(x, y_1~{y^\ast}) &=& {\mathrm{setminus{\scriptstyle 1}}}(x, {y^\ast}) &\qquad \mbox{otherwise} \\ \end{array} $$ @@ -2044,29 +2044,29 @@ $$ $$ \begin{array}{@{}lcl@{}l@{}} -{|\mathsf{i{\scriptstyle32}}|} &=& 32 \\ -{|\mathsf{i{\scriptstyle64}}|} &=& 64 \\ -{|\mathsf{f{\scriptstyle32}}|} &=& 32 \\ -{|\mathsf{f{\scriptstyle64}}|} &=& 64 \\ +{|\mathsf{i{\scriptstyle 32}}|} &=& 32 \\ +{|\mathsf{i{\scriptstyle 64}}|} &=& 64 \\ +{|\mathsf{f{\scriptstyle 32}}|} &=& 32 \\ +{|\mathsf{f{\scriptstyle 64}}|} &=& 64 \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -{|{\mathsf{i}}{n}|} &=& {|{\mathsf{i}}{n}|} \\ +{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|} &=& {|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|} \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -{|\mathsf{v{\scriptstyle128}}|} &=& 128 \\ +{|\mathsf{v{\scriptstyle 128}}|} &=& 128 \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -{|\mathsf{i{\scriptstyle8}}|} &=& 8 \\ -{|\mathsf{i{\scriptstyle16}}|} &=& 16 \\ +{|\mathsf{i{\scriptstyle 8}}|} &=& 8 \\ +{|\mathsf{i{\scriptstyle 16}}|} &=& 16 \\ \end{array} $$ @@ -2087,15 +2087,15 @@ $$ $$ \begin{array}{@{}lcl@{}l@{}} -{\mathsf{i}}{32} &=& \mathsf{i{\scriptstyle32}} \\ -{\mathsf{i}}{64} &=& \mathsf{i{\scriptstyle64}} \\ +{\mathsf{i}}{32} &=& \mathsf{i{\scriptstyle 32}} \\ +{\mathsf{i}}{64} &=& \mathsf{i{\scriptstyle 64}} \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -{\mathsf{f}}{32} &=& \mathsf{f{\scriptstyle32}} \\ -{\mathsf{f}}{64} &=& \mathsf{f{\scriptstyle64}} \\ +{\mathsf{f}}{32} &=& \mathsf{f{\scriptstyle 32}} \\ +{\mathsf{f}}{64} &=& \mathsf{f{\scriptstyle 64}} \\ \end{array} $$ @@ -2104,21 +2104,21 @@ $$ $$ \begin{array}{@{}lcl@{}l@{}} {\mathrm{unpack}}({\mathit{numtype}}) &=& {\mathit{numtype}} \\ -{\mathrm{unpack}}({\mathit{packtype}}) &=& \mathsf{i{\scriptstyle32}} \\ +{\mathrm{unpack}}({\mathit{packtype}}) &=& \mathsf{i{\scriptstyle 32}} \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} {\mathrm{unpack}}({\mathit{valtype}}) &=& {\mathit{valtype}} \\ -{\mathrm{unpack}}({\mathit{packtype}}) &=& \mathsf{i{\scriptstyle32}} \\ +{\mathrm{unpack}}({\mathit{packtype}}) &=& \mathsf{i{\scriptstyle 32}} \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} {\mathrm{unpack}}({\mathit{numtype}}) &=& {\mathit{numtype}} \\ -{\mathrm{unpack}}({\mathit{packtype}}) &=& \mathsf{i{\scriptstyle32}} \\ +{\mathrm{unpack}}({\mathit{packtype}}) &=& \mathsf{i{\scriptstyle 32}} \\ \end{array} $$ @@ -2131,7 +2131,7 @@ $$ $$ \begin{array}{@{}lcl@{}l@{}} {\mathrm{unpack}}({\mathit{consttype}}) &=& {\mathit{consttype}} \\ -{\mathrm{unpack}}({\mathit{packtype}}) &=& \mathsf{i{\scriptstyle32}} \\ +{\mathrm{unpack}}({\mathit{packtype}}) &=& \mathsf{i{\scriptstyle 32}} \\ {\mathrm{unpack}}({\mathit{lanetype}}) &=& {\mathrm{unpack}}({\mathit{lanetype}}) \\ \end{array} $$ @@ -2156,25 +2156,25 @@ $$ $$ \begin{array}{@{}lcl@{}l@{}} -{\mathrm{lanetype}}({{\mathsf{i}}{n}}{\mathsf{x}}{N}) &=& {\mathsf{i}}{n} \\ +{\mathrm{lanetype}}({{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}) &=& {\mathsf{i}}{{\mathit{{\scriptstyle N}}}} \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -{\mathrm{dim}}({{\mathsf{i}}{n}}{\mathsf{x}}{N}) &=& N \\ +{\mathrm{dim}}({{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}) &=& {\mathit{{\scriptstyle N}}} \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -{|{{\mathsf{i}}{n}}{\mathsf{x}}{N}|} &=& {|{\mathsf{i}}{n}|} \cdot N \\ +{|{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}|} &=& {|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|} \cdot {\mathit{{\scriptstyle N}}} \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -{\mathrm{unpack}}({{\mathsf{i}}{n}}{\mathsf{x}}{N}) &=& {\mathrm{unpack}}({\mathsf{i}}{n}) \\ +{\mathrm{unpack}}({{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}) &=& {\mathrm{unpack}}({\mathsf{i}}{{\mathit{{\scriptstyle N}}}}) \\ \end{array} $$ @@ -2317,7 +2317,7 @@ $$ $$ \begin{array}{@{}lcl@{}l@{}} -{({\mathit{lim}}~\mathsf{i{\scriptstyle8}})}{{}[ {{\mathit{xx}}^\ast} := {{\mathit{tu}}^\ast} ]} &=& {\mathit{lim}}~\mathsf{i{\scriptstyle8}} \\ +{({\mathit{lim}}~\mathsf{i{\scriptstyle 8}})}{{}[ {{\mathit{xx}}^\ast} := {{\mathit{tu}}^\ast} ]} &=& {\mathit{lim}}~\mathsf{i{\scriptstyle 8}} \\ \end{array} $$ @@ -2457,17 +2457,17 @@ $$ $$ \begin{array}{@{}lcl@{}l@{}} -{{\mathrm{signed}}}_{N}(i) &=& i - &\qquad \mbox{if}~0 \leq {2^{N - 1}} \\ -{{\mathrm{signed}}}_{N}(i) &=& i - {2^{N}} - &\qquad \mbox{if}~{2^{N - 1}} \leq i < {2^{N}} \\ +{{\mathrm{signed}}}_{{\mathit{{\scriptstyle N}}}}(i) &=& i + &\qquad \mbox{if}~0 \leq {2^{{\mathit{{\scriptstyle N}}} - 1}} \\ +{{\mathrm{signed}}}_{{\mathit{{\scriptstyle N}}}}(i) &=& i - {2^{{\mathit{{\scriptstyle N}}}}} + &\qquad \mbox{if}~{2^{{\mathit{{\scriptstyle N}}} - 1}} \leq i < {2^{{\mathit{{\scriptstyle N}}}}} \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -{{{{\mathrm{signed}}}_{N}^{{-1}}}}{(i)} &=& j - &\qquad \mbox{if}~{{\mathrm{signed}}}_{N}(j) = i \\ +{{{{\mathrm{signed}}}_{{\mathit{{\scriptstyle N}}}}^{{-1}}}}{(i)} &=& j + &\qquad \mbox{if}~{{\mathrm{signed}}}_{{\mathit{{\scriptstyle N}}}}(j) = i \\ \end{array} $$ @@ -2477,15 +2477,15 @@ $$ $$ \begin{array}{@{}lcl@{}l@{}} -{\mathrm{invibytes}}(N, {b^\ast}) &=& n - &\qquad \mbox{if}~{{\mathrm{bytes}}}_{{\mathsf{i}}{N}}(n) = {b^\ast} \\ +{\mathrm{invibytes}}({\mathit{{\scriptstyle N}}}, {b^\ast}) &=& n + &\qquad \mbox{if}~{{\mathrm{bytes}}}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}(n) = {b^\ast} \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -{\mathrm{invfbytes}}(N, {b^\ast}) &=& p - &\qquad \mbox{if}~{{\mathrm{bytes}}}_{{\mathsf{f}}{N}}(p) = {b^\ast} \\ +{\mathrm{invfbytes}}({\mathit{{\scriptstyle N}}}, {b^\ast}) &=& p + &\qquad \mbox{if}~{{\mathrm{bytes}}}_{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}(p) = {b^\ast} \\ \end{array} $$ @@ -2495,95 +2495,95 @@ $$ $$ \begin{array}{@{}lcl@{}l@{}} -{\mathsf{add}}{{}_{{\mathsf{i}}{n}}}{({\mathit{iN}}_1,\, {\mathit{iN}}_2)} &=& {{\mathrm{iadd}}}_{{|{\mathsf{i}}{n}|}}({\mathit{iN}}_1, {\mathit{iN}}_2) \\ -{\mathsf{sub}}{{}_{{\mathsf{i}}{n}}}{({\mathit{iN}}_1,\, {\mathit{iN}}_2)} &=& {{\mathrm{isub}}}_{{|{\mathsf{i}}{n}|}}({\mathit{iN}}_1, {\mathit{iN}}_2) \\ -{\mathsf{mul}}{{}_{{\mathsf{i}}{n}}}{({\mathit{iN}}_1,\, {\mathit{iN}}_2)} &=& {{\mathrm{imul}}}_{{|{\mathsf{i}}{n}|}}({\mathit{iN}}_1, {\mathit{iN}}_2) \\ -{{\mathsf{div}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{\mathsf{i}}{n}}}{({\mathit{iN}}_1,\, {\mathit{iN}}_2)} &=& {{{{\mathrm{idiv}}}_{{|{\mathsf{i}}{n}|}}^{{\mathit{sx}}}}}{({\mathit{iN}}_1,\, {\mathit{iN}}_2)} \\ -{{\mathsf{rem}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{\mathsf{i}}{n}}}{({\mathit{iN}}_1,\, {\mathit{iN}}_2)} &=& {{{{\mathrm{irem}}}_{{|{\mathsf{i}}{n}|}}^{{\mathit{sx}}}}}{({\mathit{iN}}_1,\, {\mathit{iN}}_2)} \\ -{\mathsf{and}}{{}_{{\mathsf{i}}{n}}}{({\mathit{iN}}_1,\, {\mathit{iN}}_2)} &=& {{\mathrm{iand}}}_{{|{\mathsf{i}}{n}|}}({\mathit{iN}}_1, {\mathit{iN}}_2) \\ -{\mathsf{or}}{{}_{{\mathsf{i}}{n}}}{({\mathit{iN}}_1,\, {\mathit{iN}}_2)} &=& {{\mathrm{ior}}}_{{|{\mathsf{i}}{n}|}}({\mathit{iN}}_1, {\mathit{iN}}_2) \\ -{\mathsf{xor}}{{}_{{\mathsf{i}}{n}}}{({\mathit{iN}}_1,\, {\mathit{iN}}_2)} &=& {{\mathrm{ixor}}}_{{|{\mathsf{i}}{n}|}}({\mathit{iN}}_1, {\mathit{iN}}_2) \\ -{\mathsf{shl}}{{}_{{\mathsf{i}}{n}}}{({\mathit{iN}}_1,\, {\mathit{iN}}_2)} &=& {{\mathrm{ishl}}}_{{|{\mathsf{i}}{n}|}}({\mathit{iN}}_1, {\mathit{iN}}_2) \\ -{{\mathsf{shr}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{\mathsf{i}}{n}}}{({\mathit{iN}}_1,\, {\mathit{iN}}_2)} &=& {{{{\mathrm{ishr}}}_{{|{\mathsf{i}}{n}|}}^{{\mathit{sx}}}}}{({\mathit{iN}}_1,\, {\mathit{iN}}_2)} \\ -{\mathsf{rotl}}{{}_{{\mathsf{i}}{n}}}{({\mathit{iN}}_1,\, {\mathit{iN}}_2)} &=& {{\mathrm{irotl}}}_{{|{\mathsf{i}}{n}|}}({\mathit{iN}}_1, {\mathit{iN}}_2) \\ -{\mathsf{rotr}}{{}_{{\mathsf{i}}{n}}}{({\mathit{iN}}_1,\, {\mathit{iN}}_2)} &=& {{\mathrm{irotr}}}_{{|{\mathsf{i}}{n}|}}({\mathit{iN}}_1, {\mathit{iN}}_2) \\ +{\mathsf{add}}{{}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{i{\scriptstyle N}}}_1,\, {\mathit{i{\scriptstyle N}}}_2)} &=& {{\mathrm{iadd}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{i{\scriptstyle N}}}_1, {\mathit{i{\scriptstyle N}}}_2) \\ +{\mathsf{sub}}{{}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{i{\scriptstyle N}}}_1,\, {\mathit{i{\scriptstyle N}}}_2)} &=& {{\mathrm{isub}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{i{\scriptstyle N}}}_1, {\mathit{i{\scriptstyle N}}}_2) \\ +{\mathsf{mul}}{{}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{i{\scriptstyle N}}}_1,\, {\mathit{i{\scriptstyle N}}}_2)} &=& {{\mathrm{imul}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{i{\scriptstyle N}}}_1, {\mathit{i{\scriptstyle N}}}_2) \\ +{{\mathsf{div}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{i{\scriptstyle N}}}_1,\, {\mathit{i{\scriptstyle N}}}_2)} &=& {{{{\mathrm{idiv}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}^{{\mathit{sx}}}}}{({\mathit{i{\scriptstyle N}}}_1,\, {\mathit{i{\scriptstyle N}}}_2)} \\ +{{\mathsf{rem}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{i{\scriptstyle N}}}_1,\, {\mathit{i{\scriptstyle N}}}_2)} &=& {{{{\mathrm{irem}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}^{{\mathit{sx}}}}}{({\mathit{i{\scriptstyle N}}}_1,\, {\mathit{i{\scriptstyle N}}}_2)} \\ +{\mathsf{and}}{{}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{i{\scriptstyle N}}}_1,\, {\mathit{i{\scriptstyle N}}}_2)} &=& {{\mathrm{iand}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{i{\scriptstyle N}}}_1, {\mathit{i{\scriptstyle N}}}_2) \\ +{\mathsf{or}}{{}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{i{\scriptstyle N}}}_1,\, {\mathit{i{\scriptstyle N}}}_2)} &=& {{\mathrm{ior}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{i{\scriptstyle N}}}_1, {\mathit{i{\scriptstyle N}}}_2) \\ +{\mathsf{xor}}{{}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{i{\scriptstyle N}}}_1,\, {\mathit{i{\scriptstyle N}}}_2)} &=& {{\mathrm{ixor}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{i{\scriptstyle N}}}_1, {\mathit{i{\scriptstyle N}}}_2) \\ +{\mathsf{shl}}{{}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{i{\scriptstyle N}}}_1,\, {\mathit{i{\scriptstyle N}}}_2)} &=& {{\mathrm{ishl}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{i{\scriptstyle N}}}_1, {\mathit{i{\scriptstyle N}}}_2) \\ +{{\mathsf{shr}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{i{\scriptstyle N}}}_1,\, {\mathit{i{\scriptstyle N}}}_2)} &=& {{{{\mathrm{ishr}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}^{{\mathit{sx}}}}}{({\mathit{i{\scriptstyle N}}}_1,\, {\mathit{i{\scriptstyle N}}}_2)} \\ +{\mathsf{rotl}}{{}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{i{\scriptstyle N}}}_1,\, {\mathit{i{\scriptstyle N}}}_2)} &=& {{\mathrm{irotl}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{i{\scriptstyle N}}}_1, {\mathit{i{\scriptstyle N}}}_2) \\ +{\mathsf{rotr}}{{}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{i{\scriptstyle N}}}_1,\, {\mathit{i{\scriptstyle N}}}_2)} &=& {{\mathrm{irotr}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{i{\scriptstyle N}}}_1, {\mathit{i{\scriptstyle N}}}_2) \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -{\mathsf{clz}}{{}_{{\mathsf{i}}{n}}}{({\mathit{iN}})} &=& {{\mathrm{iclz}}}_{{|{\mathsf{i}}{n}|}}({\mathit{iN}}) \\ -{\mathsf{ctz}}{{}_{{\mathsf{i}}{n}}}{({\mathit{iN}})} &=& {{\mathrm{iclz}}}_{{|{\mathsf{i}}{n}|}}({\mathit{iN}}) \\ -{\mathsf{popcnt}}{{}_{{\mathsf{i}}{n}}}{({\mathit{iN}})} &=& {{\mathrm{ipopcnt}}}_{{|{\mathsf{i}}{n}|}}({\mathit{iN}}) \\ -{\mathsf{extend}~N}{{}_{{\mathsf{i}}{n}}}{({\mathit{iN}})} &=& {{{{\mathrm{ext}}}_{N, {|{\mathsf{i}}{n}|}}^{\mathsf{s}}}}{({{{\mathrm{wrap}}}_{{|{\mathsf{i}}{n}|}, N}}{({\mathit{iN}})})} \\ +{\mathsf{clz}}{{}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{i{\scriptstyle N}}})} &=& {{\mathrm{iclz}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{i{\scriptstyle N}}}) \\ +{\mathsf{ctz}}{{}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{i{\scriptstyle N}}})} &=& {{\mathrm{iclz}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{i{\scriptstyle N}}}) \\ +{\mathsf{popcnt}}{{}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{i{\scriptstyle N}}})} &=& {{\mathrm{ipopcnt}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{i{\scriptstyle N}}}) \\ +{\mathsf{extend}~{\mathit{{\scriptstyle N}}}}{{}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{i{\scriptstyle N}}})} &=& {{{{\mathrm{ext}}}_{{\mathit{{\scriptstyle N}}}, {|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}^{\mathsf{s}}}}{({{{\mathrm{wrap}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}, {\mathit{{\scriptstyle N}}}}}{({\mathit{i{\scriptstyle N}}})})} \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -{\mathsf{eqz}}{{}_{{\mathsf{i}}{n}}}{({\mathit{iN}})} &=& {{\mathrm{ieqz}}}_{{|{\mathsf{i}}{n}|}}({\mathit{iN}}) \\ +{\mathsf{eqz}}{{}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{i{\scriptstyle N}}})} &=& {{\mathrm{ieqz}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{i{\scriptstyle N}}}) \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -{\mathsf{eq}}{{}_{{\mathsf{i}}{n}}}{({\mathit{iN}}_1,\, {\mathit{iN}}_2)} &=& {{\mathrm{ieq}}}_{{|{\mathsf{i}}{n}|}}({\mathit{iN}}_1, {\mathit{iN}}_2) \\ -{\mathsf{ne}}{{}_{{\mathsf{i}}{n}}}{({\mathit{iN}}_1,\, {\mathit{iN}}_2)} &=& {{\mathrm{ine}}}_{{|{\mathsf{i}}{n}|}}({\mathit{iN}}_1, {\mathit{iN}}_2) \\ -{{\mathsf{lt}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{\mathsf{i}}{n}}}{({\mathit{iN}}_1,\, {\mathit{iN}}_2)} &=& {{{{\mathrm{ilt}}}_{{|{\mathsf{i}}{n}|}}^{{\mathit{sx}}}}}{({\mathit{iN}}_1,\, {\mathit{iN}}_2)} \\ -{{\mathsf{gt}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{\mathsf{i}}{n}}}{({\mathit{iN}}_1,\, {\mathit{iN}}_2)} &=& {{{{\mathrm{igt}}}_{{|{\mathsf{i}}{n}|}}^{{\mathit{sx}}}}}{({\mathit{iN}}_1,\, {\mathit{iN}}_2)} \\ -{{\mathsf{le}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{\mathsf{i}}{n}}}{({\mathit{iN}}_1,\, {\mathit{iN}}_2)} &=& {{{{\mathrm{ile}}}_{{|{\mathsf{i}}{n}|}}^{{\mathit{sx}}}}}{({\mathit{iN}}_1,\, {\mathit{iN}}_2)} \\ -{{\mathsf{ge}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{\mathsf{i}}{n}}}{({\mathit{iN}}_1,\, {\mathit{iN}}_2)} &=& {{{{\mathrm{ige}}}_{{|{\mathsf{i}}{n}|}}^{{\mathit{sx}}}}}{({\mathit{iN}}_1,\, {\mathit{iN}}_2)} \\ +{\mathsf{eq}}{{}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{i{\scriptstyle N}}}_1,\, {\mathit{i{\scriptstyle N}}}_2)} &=& {{\mathrm{ieq}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{i{\scriptstyle N}}}_1, {\mathit{i{\scriptstyle N}}}_2) \\ +{\mathsf{ne}}{{}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{i{\scriptstyle N}}}_1,\, {\mathit{i{\scriptstyle N}}}_2)} &=& {{\mathrm{ine}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{i{\scriptstyle N}}}_1, {\mathit{i{\scriptstyle N}}}_2) \\ +{{\mathsf{lt}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{i{\scriptstyle N}}}_1,\, {\mathit{i{\scriptstyle N}}}_2)} &=& {{{{\mathrm{ilt}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}^{{\mathit{sx}}}}}{({\mathit{i{\scriptstyle N}}}_1,\, {\mathit{i{\scriptstyle N}}}_2)} \\ +{{\mathsf{gt}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{i{\scriptstyle N}}}_1,\, {\mathit{i{\scriptstyle N}}}_2)} &=& {{{{\mathrm{igt}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}^{{\mathit{sx}}}}}{({\mathit{i{\scriptstyle N}}}_1,\, {\mathit{i{\scriptstyle N}}}_2)} \\ +{{\mathsf{le}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{i{\scriptstyle N}}}_1,\, {\mathit{i{\scriptstyle N}}}_2)} &=& {{{{\mathrm{ile}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}^{{\mathit{sx}}}}}{({\mathit{i{\scriptstyle N}}}_1,\, {\mathit{i{\scriptstyle N}}}_2)} \\ +{{\mathsf{ge}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{i{\scriptstyle N}}}_1,\, {\mathit{i{\scriptstyle N}}}_2)} &=& {{{{\mathrm{ige}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}^{{\mathit{sx}}}}}{({\mathit{i{\scriptstyle N}}}_1,\, {\mathit{i{\scriptstyle N}}}_2)} \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -{\mathsf{add}}{{}_{{\mathsf{f}}{n}}}{({\mathit{fN}}_1,\, {\mathit{fN}}_2)} &=& {{\mathrm{fadd}}}_{{|{\mathsf{f}}{n}|}}({\mathit{fN}}_1, {\mathit{fN}}_2) \\ -{\mathsf{sub}}{{}_{{\mathsf{f}}{n}}}{({\mathit{fN}}_1,\, {\mathit{fN}}_2)} &=& {{\mathrm{fsub}}}_{{|{\mathsf{f}}{n}|}}({\mathit{fN}}_1, {\mathit{fN}}_2) \\ -{\mathsf{mul}}{{}_{{\mathsf{f}}{n}}}{({\mathit{fN}}_1,\, {\mathit{fN}}_2)} &=& {{\mathrm{fmul}}}_{{|{\mathsf{f}}{n}|}}({\mathit{fN}}_1, {\mathit{fN}}_2) \\ -{\mathsf{div}}{{}_{{\mathsf{f}}{n}}}{({\mathit{fN}}_1,\, {\mathit{fN}}_2)} &=& {{\mathrm{fdiv}}}_{{|{\mathsf{f}}{n}|}}({\mathit{fN}}_1, {\mathit{fN}}_2) \\ -{\mathsf{min}}{{}_{{\mathsf{f}}{n}}}{({\mathit{fN}}_1,\, {\mathit{fN}}_2)} &=& {{\mathrm{fmin}}}_{{|{\mathsf{f}}{n}|}}({\mathit{fN}}_1, {\mathit{fN}}_2) \\ -{\mathsf{max}}{{}_{{\mathsf{f}}{n}}}{({\mathit{fN}}_1,\, {\mathit{fN}}_2)} &=& {{\mathrm{fmax}}}_{{|{\mathsf{f}}{n}|}}({\mathit{fN}}_1, {\mathit{fN}}_2) \\ -{\mathsf{copysign}}{{}_{{\mathsf{f}}{n}}}{({\mathit{fN}}_1,\, {\mathit{fN}}_2)} &=& {{\mathrm{fcopysign}}}_{{|{\mathsf{f}}{n}|}}({\mathit{fN}}_1, {\mathit{fN}}_2) \\ +{\mathsf{add}}{{}_{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{f{\scriptstyle N}}}_1,\, {\mathit{f{\scriptstyle N}}}_2)} &=& {{\mathrm{fadd}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{f{\scriptstyle N}}}_1, {\mathit{f{\scriptstyle N}}}_2) \\ +{\mathsf{sub}}{{}_{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{f{\scriptstyle N}}}_1,\, {\mathit{f{\scriptstyle N}}}_2)} &=& {{\mathrm{fsub}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{f{\scriptstyle N}}}_1, {\mathit{f{\scriptstyle N}}}_2) \\ +{\mathsf{mul}}{{}_{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{f{\scriptstyle N}}}_1,\, {\mathit{f{\scriptstyle N}}}_2)} &=& {{\mathrm{fmul}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{f{\scriptstyle N}}}_1, {\mathit{f{\scriptstyle N}}}_2) \\ +{\mathsf{div}}{{}_{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{f{\scriptstyle N}}}_1,\, {\mathit{f{\scriptstyle N}}}_2)} &=& {{\mathrm{fdiv}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{f{\scriptstyle N}}}_1, {\mathit{f{\scriptstyle N}}}_2) \\ +{\mathsf{min}}{{}_{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{f{\scriptstyle N}}}_1,\, {\mathit{f{\scriptstyle N}}}_2)} &=& {{\mathrm{fmin}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{f{\scriptstyle N}}}_1, {\mathit{f{\scriptstyle N}}}_2) \\ +{\mathsf{max}}{{}_{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{f{\scriptstyle N}}}_1,\, {\mathit{f{\scriptstyle N}}}_2)} &=& {{\mathrm{fmax}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{f{\scriptstyle N}}}_1, {\mathit{f{\scriptstyle N}}}_2) \\ +{\mathsf{copysign}}{{}_{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{f{\scriptstyle N}}}_1,\, {\mathit{f{\scriptstyle N}}}_2)} &=& {{\mathrm{fcopysign}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{f{\scriptstyle N}}}_1, {\mathit{f{\scriptstyle N}}}_2) \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -{\mathsf{abs}}{{}_{{\mathsf{f}}{n}}}{({\mathit{fN}})} &=& {{\mathrm{fabs}}}_{{|{\mathsf{f}}{n}|}}({\mathit{fN}}) \\ -{\mathsf{neg}}{{}_{{\mathsf{f}}{n}}}{({\mathit{fN}})} &=& {{\mathrm{fneg}}}_{{|{\mathsf{f}}{n}|}}({\mathit{fN}}) \\ -{\mathsf{sqrt}}{{}_{{\mathsf{f}}{n}}}{({\mathit{fN}})} &=& {{\mathrm{fsqrt}}}_{{|{\mathsf{f}}{n}|}}({\mathit{fN}}) \\ -{\mathsf{ceil}}{{}_{{\mathsf{f}}{n}}}{({\mathit{fN}})} &=& {{\mathrm{fceil}}}_{{|{\mathsf{f}}{n}|}}({\mathit{fN}}) \\ -{\mathsf{floor}}{{}_{{\mathsf{f}}{n}}}{({\mathit{fN}})} &=& {{\mathrm{ffloor}}}_{{|{\mathsf{f}}{n}|}}({\mathit{fN}}) \\ -{\mathsf{trunc}}{{}_{{\mathsf{f}}{n}}}{({\mathit{fN}})} &=& {{\mathrm{ftrunc}}}_{{|{\mathsf{f}}{n}|}}({\mathit{fN}}) \\ -{\mathsf{nearest}}{{}_{{\mathsf{f}}{n}}}{({\mathit{fN}})} &=& {{\mathrm{fnearest}}}_{{|{\mathsf{f}}{n}|}}({\mathit{fN}}) \\ +{\mathsf{abs}}{{}_{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{f{\scriptstyle N}}})} &=& {{\mathrm{fabs}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{f{\scriptstyle N}}}) \\ +{\mathsf{neg}}{{}_{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{f{\scriptstyle N}}})} &=& {{\mathrm{fneg}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{f{\scriptstyle N}}}) \\ +{\mathsf{sqrt}}{{}_{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{f{\scriptstyle N}}})} &=& {{\mathrm{fsqrt}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{f{\scriptstyle N}}}) \\ +{\mathsf{ceil}}{{}_{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{f{\scriptstyle N}}})} &=& {{\mathrm{fceil}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{f{\scriptstyle N}}}) \\ +{\mathsf{floor}}{{}_{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{f{\scriptstyle N}}})} &=& {{\mathrm{ffloor}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{f{\scriptstyle N}}}) \\ +{\mathsf{trunc}}{{}_{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{f{\scriptstyle N}}})} &=& {{\mathrm{ftrunc}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{f{\scriptstyle N}}}) \\ +{\mathsf{nearest}}{{}_{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{f{\scriptstyle N}}})} &=& {{\mathrm{fnearest}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{f{\scriptstyle N}}}) \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -{\mathsf{eq}}{{}_{{\mathsf{f}}{n}}}{({\mathit{fN}}_1,\, {\mathit{fN}}_2)} &=& {{\mathrm{feq}}}_{{|{\mathsf{f}}{n}|}}({\mathit{fN}}_1, {\mathit{fN}}_2) \\ -{\mathsf{ne}}{{}_{{\mathsf{f}}{n}}}{({\mathit{fN}}_1,\, {\mathit{fN}}_2)} &=& {{\mathrm{fne}}}_{{|{\mathsf{f}}{n}|}}({\mathit{fN}}_1, {\mathit{fN}}_2) \\ -{\mathsf{lt}}{{}_{{\mathsf{f}}{n}}}{({\mathit{fN}}_1,\, {\mathit{fN}}_2)} &=& {{\mathrm{flt}}}_{{|{\mathsf{f}}{n}|}}({\mathit{fN}}_1, {\mathit{fN}}_2) \\ -{\mathsf{gt}}{{}_{{\mathsf{f}}{n}}}{({\mathit{fN}}_1,\, {\mathit{fN}}_2)} &=& {{\mathrm{fgt}}}_{{|{\mathsf{f}}{n}|}}({\mathit{fN}}_1, {\mathit{fN}}_2) \\ -{\mathsf{le}}{{}_{{\mathsf{f}}{n}}}{({\mathit{fN}}_1,\, {\mathit{fN}}_2)} &=& {{\mathrm{fle}}}_{{|{\mathsf{f}}{n}|}}({\mathit{fN}}_1, {\mathit{fN}}_2) \\ -{\mathsf{ge}}{{}_{{\mathsf{f}}{n}}}{({\mathit{fN}}_1,\, {\mathit{fN}}_2)} &=& {{\mathrm{fge}}}_{{|{\mathsf{f}}{n}|}}({\mathit{fN}}_1, {\mathit{fN}}_2) \\ +{\mathsf{eq}}{{}_{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{f{\scriptstyle N}}}_1,\, {\mathit{f{\scriptstyle N}}}_2)} &=& {{\mathrm{feq}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{f{\scriptstyle N}}}_1, {\mathit{f{\scriptstyle N}}}_2) \\ +{\mathsf{ne}}{{}_{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{f{\scriptstyle N}}}_1,\, {\mathit{f{\scriptstyle N}}}_2)} &=& {{\mathrm{fne}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{f{\scriptstyle N}}}_1, {\mathit{f{\scriptstyle N}}}_2) \\ +{\mathsf{lt}}{{}_{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{f{\scriptstyle N}}}_1,\, {\mathit{f{\scriptstyle N}}}_2)} &=& {{\mathrm{flt}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{f{\scriptstyle N}}}_1, {\mathit{f{\scriptstyle N}}}_2) \\ +{\mathsf{gt}}{{}_{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{f{\scriptstyle N}}}_1,\, {\mathit{f{\scriptstyle N}}}_2)} &=& {{\mathrm{fgt}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{f{\scriptstyle N}}}_1, {\mathit{f{\scriptstyle N}}}_2) \\ +{\mathsf{le}}{{}_{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{f{\scriptstyle N}}}_1,\, {\mathit{f{\scriptstyle N}}}_2)} &=& {{\mathrm{fle}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{f{\scriptstyle N}}}_1, {\mathit{f{\scriptstyle N}}}_2) \\ +{\mathsf{ge}}{{}_{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{f{\scriptstyle N}}}_1,\, {\mathit{f{\scriptstyle N}}}_2)} &=& {{\mathrm{fge}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{f{\scriptstyle N}}}_1, {\mathit{f{\scriptstyle N}}}_2) \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -{\mathsf{convert}}{{{}_{\mathsf{i{\scriptstyle32}}, \mathsf{i{\scriptstyle64}}}^{{\mathit{sx}}}}}{({\mathit{iN}})} &=& {{{{\mathrm{ext}}}_{32, 64}^{{\mathit{sx}}}}}{({\mathit{iN}})} \\ -{\mathsf{convert}}{{{}_{\mathsf{i{\scriptstyle64}}, \mathsf{i{\scriptstyle32}}}^{{{\mathit{sx}}^?}}}}{({\mathit{iN}})} &=& {{{\mathrm{wrap}}}_{64, 32}}{({\mathit{iN}})} \\ -{\mathsf{convert}}{{{}_{{\mathsf{f}}{n}, {\mathsf{i}}{n}}^{{\mathit{sx}}}}}{({\mathit{fN}})} &=& {{{{\mathrm{trunc}}}_{{|{\mathsf{f}}{n}|}, {|{\mathsf{i}}{n}|}}^{{\mathit{sx}}}}}{({\mathit{fN}})} \\ -{\mathsf{convert\_sat}}{{{}_{{\mathsf{f}}{n}, {\mathsf{i}}{n}}^{{\mathit{sx}}}}}{({\mathit{fN}})} &=& {{{{\mathrm{trunc\_sat}}}_{{|{\mathsf{f}}{n}|}, {|{\mathsf{i}}{n}|}}^{{\mathit{sx}}}}}{({\mathit{fN}})} \\ -{\mathsf{convert}}{{{}_{\mathsf{f{\scriptstyle32}}, \mathsf{f{\scriptstyle64}}}^{{{\mathit{sx}}^?}}}}{({\mathit{fN}})} &=& {{{\mathrm{promote}}}_{32, 64}}{({\mathit{fN}})} \\ -{\mathsf{convert}}{{{}_{\mathsf{f{\scriptstyle64}}, \mathsf{f{\scriptstyle32}}}^{{{\mathit{sx}}^?}}}}{({\mathit{fN}})} &=& {{{\mathrm{demote}}}_{64, 32}}{({\mathit{fN}})} \\ -{\mathsf{convert}}{{{}_{{\mathsf{i}}{n}, {\mathsf{f}}{n}}^{{\mathit{sx}}}}}{({\mathit{iN}})} &=& {{{{\mathrm{convert}}}_{{|{\mathsf{i}}{n}|}, {|{\mathsf{f}}{n}|}}^{{\mathit{sx}}}}}{({\mathit{iN}})} \\ -{\mathsf{reinterpret}}{{{}_{{\mathsf{i}}{n}, {\mathsf{f}}{n}}^{{{\mathit{sx}}^?}}}}{({\mathit{iN}})} &=& {{{\mathrm{reinterpret}}}_{{\mathsf{i}}{n}, {\mathsf{f}}{n}}}{{\mathit{iN}}} - &\qquad \mbox{if}~{|{\mathsf{i}}{n}|} = {|{\mathsf{f}}{n}|} \\ -{\mathsf{reinterpret}}{{{}_{{\mathsf{f}}{n}, {\mathsf{i}}{n}}^{{{\mathit{sx}}^?}}}}{({\mathit{fN}})} &=& {{{\mathrm{reinterpret}}}_{{\mathsf{f}}{n}, {\mathsf{i}}{n}}}{{\mathit{fN}}} - &\qquad \mbox{if}~{|{\mathsf{i}}{n}|} = {|{\mathsf{f}}{n}|} \\ +{\mathsf{convert}}{{{}_{\mathsf{i{\scriptstyle 32}}, \mathsf{i{\scriptstyle 64}}}^{{\mathit{sx}}}}}{({\mathit{i{\scriptstyle N}}})} &=& {{{{\mathrm{ext}}}_{32, 64}^{{\mathit{sx}}}}}{({\mathit{i{\scriptstyle N}}})} \\ +{\mathsf{convert}}{{{}_{\mathsf{i{\scriptstyle 64}}, \mathsf{i{\scriptstyle 32}}}^{{{\mathit{sx}}^?}}}}{({\mathit{i{\scriptstyle N}}})} &=& {{{\mathrm{wrap}}}_{64, 32}}{({\mathit{i{\scriptstyle N}}})} \\ +{\mathsf{convert}}{{{}_{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}, {\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}^{{\mathit{sx}}}}}{({\mathit{f{\scriptstyle N}}})} &=& {{{{\mathrm{trunc}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}, {|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}^{{\mathit{sx}}}}}{({\mathit{f{\scriptstyle N}}})} \\ +{\mathsf{convert\_sat}}{{{}_{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}, {\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}^{{\mathit{sx}}}}}{({\mathit{f{\scriptstyle N}}})} &=& {{{{\mathrm{trunc\_sat}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}, {|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}^{{\mathit{sx}}}}}{({\mathit{f{\scriptstyle N}}})} \\ +{\mathsf{convert}}{{{}_{\mathsf{f{\scriptstyle 32}}, \mathsf{f{\scriptstyle 64}}}^{{{\mathit{sx}}^?}}}}{({\mathit{f{\scriptstyle N}}})} &=& {{{\mathrm{promote}}}_{32, 64}}{({\mathit{f{\scriptstyle N}}})} \\ +{\mathsf{convert}}{{{}_{\mathsf{f{\scriptstyle 64}}, \mathsf{f{\scriptstyle 32}}}^{{{\mathit{sx}}^?}}}}{({\mathit{f{\scriptstyle N}}})} &=& {{{\mathrm{demote}}}_{64, 32}}{({\mathit{f{\scriptstyle N}}})} \\ +{\mathsf{convert}}{{{}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}, {\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}^{{\mathit{sx}}}}}{({\mathit{i{\scriptstyle N}}})} &=& {{{{\mathrm{convert}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}, {|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}^{{\mathit{sx}}}}}{({\mathit{i{\scriptstyle N}}})} \\ +{\mathsf{reinterpret}}{{{}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}, {\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}^{{{\mathit{sx}}^?}}}}{({\mathit{i{\scriptstyle N}}})} &=& {{{\mathrm{reinterpret}}}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}, {\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}}{{\mathit{i{\scriptstyle N}}}} + &\qquad \mbox{if}~{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|} = {|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|} \\ +{\mathsf{reinterpret}}{{{}_{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}, {\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}^{{{\mathit{sx}}^?}}}}{({\mathit{f{\scriptstyle N}}})} &=& {{{\mathrm{reinterpret}}}_{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}, {\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}}{{\mathit{f{\scriptstyle N}}}} + &\qquad \mbox{if}~{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|} = {|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|} \\ \end{array} $$ @@ -2635,269 +2635,269 @@ $$ $$ \begin{array}{@{}lcl@{}l@{}} -{\mathsf{not}}{{}_{\mathsf{v{\scriptstyle128}}}}{({\mathit{v{\scriptstyle128}}})} &=& {{\mathrm{inot}}}_{{|\mathsf{v{\scriptstyle128}}|}}({\mathit{v{\scriptstyle128}}}) \\ +{\mathsf{not}}{{}_{\mathsf{v{\scriptstyle 128}}}}{({\mathit{v{\scriptstyle 128}}})} &=& {{\mathrm{inot}}}_{{|\mathsf{v{\scriptstyle 128}}|}}({\mathit{v{\scriptstyle 128}}}) \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -{\mathsf{and}}{{}_{\mathsf{v{\scriptstyle128}}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {{\mathrm{iand}}}_{{|\mathsf{v{\scriptstyle128}}|}}({\mathit{v{\scriptstyle128}}}_1, {\mathit{v{\scriptstyle128}}}_2) \\ -{\mathsf{andnot}}{{}_{\mathsf{v{\scriptstyle128}}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {{\mathrm{inot}}}_{{|\mathsf{v{\scriptstyle128}}|}}({\mathit{v{\scriptstyle128}}}_1, {\mathit{v{\scriptstyle128}}}_2) \\ -{\mathsf{or}}{{}_{\mathsf{v{\scriptstyle128}}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {{\mathrm{ior}}}_{{|\mathsf{v{\scriptstyle128}}|}}({\mathit{v{\scriptstyle128}}}_1, {\mathit{v{\scriptstyle128}}}_2) \\ -{\mathsf{xor}}{{}_{\mathsf{v{\scriptstyle128}}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {{\mathrm{ixor}}}_{{|\mathsf{v{\scriptstyle128}}|}}({\mathit{v{\scriptstyle128}}}_1, {\mathit{v{\scriptstyle128}}}_2) \\ +{\mathsf{and}}{{}_{\mathsf{v{\scriptstyle 128}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {{\mathrm{iand}}}_{{|\mathsf{v{\scriptstyle 128}}|}}({\mathit{v{\scriptstyle 128}}}_1, {\mathit{v{\scriptstyle 128}}}_2) \\ +{\mathsf{andnot}}{{}_{\mathsf{v{\scriptstyle 128}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {{\mathrm{inot}}}_{{|\mathsf{v{\scriptstyle 128}}|}}({\mathit{v{\scriptstyle 128}}}_1, {\mathit{v{\scriptstyle 128}}}_2) \\ +{\mathsf{or}}{{}_{\mathsf{v{\scriptstyle 128}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {{\mathrm{ior}}}_{{|\mathsf{v{\scriptstyle 128}}|}}({\mathit{v{\scriptstyle 128}}}_1, {\mathit{v{\scriptstyle 128}}}_2) \\ +{\mathsf{xor}}{{}_{\mathsf{v{\scriptstyle 128}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {{\mathrm{ixor}}}_{{|\mathsf{v{\scriptstyle 128}}|}}({\mathit{v{\scriptstyle 128}}}_1, {\mathit{v{\scriptstyle 128}}}_2) \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -{\mathsf{bitselect}}{{}_{\mathsf{v{\scriptstyle128}}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2,\, {\mathit{v{\scriptstyle128}}}_3)} &=& {{\mathrm{ibitselect}}}_{{|\mathsf{v{\scriptstyle128}}|}}({\mathit{v{\scriptstyle128}}}_1, {\mathit{v{\scriptstyle128}}}_2, {\mathit{v{\scriptstyle128}}}_3) \\ +{\mathsf{bitselect}}{{}_{\mathsf{v{\scriptstyle 128}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2,\, {\mathit{v{\scriptstyle 128}}}_3)} &=& {{\mathrm{ibitselect}}}_{{|\mathsf{v{\scriptstyle 128}}|}}({\mathit{v{\scriptstyle 128}}}_1, {\mathit{v{\scriptstyle 128}}}_2, {\mathit{v{\scriptstyle 128}}}_3) \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -{\mathsf{abs}}{{}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{{\mathrm{iabs}}}_{{|{\mathsf{i}}{n}|}}({\mathit{lane}}_1)^\ast})} \\ -{\mathsf{neg}}{{}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{{\mathrm{ineg}}}_{{|{\mathsf{i}}{n}|}}({\mathit{lane}}_1)^\ast})} \\ -{\mathsf{popcnt}}{{}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{{\mathrm{ipopcnt}}}_{{|{\mathsf{i}}{n}|}}({\mathit{lane}}_1)^\ast})} \\ +{\mathsf{abs}}{{}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{{\mathrm{iabs}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1)^\ast})} \\ +{\mathsf{neg}}{{}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{{\mathrm{ineg}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1)^\ast})} \\ +{\mathsf{popcnt}}{{}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{{\mathrm{ipopcnt}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1)^\ast})} \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -{\mathsf{add}}{{}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_2) \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{{\mathrm{iadd}}}_{{|{\mathsf{i}}{n}|}}({\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ -{\mathsf{sub}}{{}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_2) \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{{\mathrm{isub}}}_{{|{\mathsf{i}}{n}|}}({\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ -{{\mathsf{min}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_2) \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{\mathrm{imin}}({|{\mathsf{i}}{n}|}, {\mathit{sx}}, {\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ -{{\mathsf{max}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_2) \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{\mathrm{imax}}({|{\mathsf{i}}{n}|}, {\mathit{sx}}, {\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ -{{\mathsf{add\_sat}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_2) \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{{{{\mathrm{iaddsat}}}_{{|{\mathsf{i}}{n}|}}^{{\mathit{sx}}}}}{({\mathit{lane}}_1,\, {\mathit{lane}}_2)}^\ast})} \\ -{{\mathsf{sub\_sat}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_2) \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{{{{\mathrm{isubsat}}}_{{|{\mathsf{i}}{n}|}}^{{\mathit{sx}}}}}{({\mathit{lane}}_1,\, {\mathit{lane}}_2)}^\ast})} \\ -{\mathsf{mul}}{{}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_2) \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{{\mathrm{imul}}}_{{|{\mathsf{i}}{n}|}}({\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ -{\mathsf{avgr\_u}}{{}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_2) \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{{\mathrm{iavgr\_u}}}_{{|{\mathsf{i}}{n}|}}({\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ -{\mathsf{q{\scriptstyle15}mulr\_sat\_s}}{{}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_2) \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{{\mathrm{iq{\scriptstyle15}mulrsat\_s}}}_{{|{\mathsf{i}}{n}|}}({\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ -\end{array} +{\mathsf{add}}{{}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_2) \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{{\mathrm{iadd}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ +{\mathsf{sub}}{{}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_2) \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{{\mathrm{isub}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ +{{\mathsf{min}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_2) \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{\mathrm{imin}}({|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}, {\mathit{sx}}, {\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ +{{\mathsf{max}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_2) \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{\mathrm{imax}}({|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}, {\mathit{sx}}, {\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ +{{\mathsf{add\_sat}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_2) \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{{{{\mathrm{iaddsat}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}^{{\mathit{sx}}}}}{({\mathit{lane}}_1,\, {\mathit{lane}}_2)}^\ast})} \\ +{{\mathsf{sub\_sat}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_2) \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{{{{\mathrm{isubsat}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}^{{\mathit{sx}}}}}{({\mathit{lane}}_1,\, {\mathit{lane}}_2)}^\ast})} \\ +{\mathsf{mul}}{{}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_2) \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{{\mathrm{imul}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ +{\mathsf{avgr\_u}}{{}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_2) \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{{\mathrm{iavgr\_u}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ +{\mathsf{q{\scriptstyle 15}mulr\_sat\_s}}{{}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_2) \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{{\mathrm{iq{\scriptstyle 15}mulrsat\_s}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ +\end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -{\mathsf{eq}}{{}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_2) \\ - &&&\qquad {\land}~{{\mathit{lane}}_3^\ast} = {{{{{\mathrm{ext}}}_{1, {|{\mathsf{i}}{n}|}}^{\mathsf{s}}}}{({{\mathrm{ieq}}}_{{|{\mathsf{i}}{n}|}}({\mathit{lane}}_1, {\mathit{lane}}_2))}^\ast} \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{\mathit{lane}}_3^\ast})} \\ -{\mathsf{ne}}{{}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_2) \\ - &&&\qquad {\land}~{{\mathit{lane}}_3^\ast} = {{{{{\mathrm{ext}}}_{1, {|{\mathsf{i}}{n}|}}^{\mathsf{s}}}}{({{\mathrm{ine}}}_{{|{\mathsf{i}}{n}|}}({\mathit{lane}}_1, {\mathit{lane}}_2))}^\ast} \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{\mathit{lane}}_3^\ast})} \\ -{{\mathsf{lt}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_2) \\ - &&&\qquad {\land}~{{\mathit{lane}}_3^\ast} = {{{{{\mathrm{ext}}}_{1, {|{\mathsf{i}}{n}|}}^{\mathsf{s}}}}{({{{{\mathrm{ilt}}}_{{|{\mathsf{i}}{n}|}}^{{\mathit{sx}}}}}{({\mathit{lane}}_1,\, {\mathit{lane}}_2)})}^\ast} \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{\mathit{lane}}_3^\ast})} \\ -{{\mathsf{gt}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_2) \\ - &&&\qquad {\land}~{{\mathit{lane}}_3^\ast} = {{{{{\mathrm{ext}}}_{1, {|{\mathsf{i}}{n}|}}^{\mathsf{s}}}}{({{{{\mathrm{igt}}}_{{|{\mathsf{i}}{n}|}}^{{\mathit{sx}}}}}{({\mathit{lane}}_1,\, {\mathit{lane}}_2)})}^\ast} \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{\mathit{lane}}_3^\ast})} \\ -{{\mathsf{le}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_2) \\ - &&&\qquad {\land}~{{\mathit{lane}}_3^\ast} = {{{{{\mathrm{ext}}}_{1, {|{\mathsf{i}}{n}|}}^{\mathsf{s}}}}{({{{{\mathrm{ile}}}_{{|{\mathsf{i}}{n}|}}^{{\mathit{sx}}}}}{({\mathit{lane}}_1,\, {\mathit{lane}}_2)})}^\ast} \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{\mathit{lane}}_3^\ast})} \\ -{{\mathsf{ge}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_2) \\ - &&&\qquad {\land}~{{\mathit{lane}}_3^\ast} = {{{{{\mathrm{ext}}}_{1, {|{\mathsf{i}}{n}|}}^{\mathsf{s}}}}{({{{{\mathrm{ige}}}_{{|{\mathsf{i}}{n}|}}^{{\mathit{sx}}}}}{({\mathit{lane}}_1,\, {\mathit{lane}}_2)})}^\ast} \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{\mathit{lane}}_3^\ast})} \\ -\end{array} -$$ - -$$ -\begin{array}{@{}lcl@{}l@{}} -{\mathsf{abs}}{{}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{{\mathrm{fabs}}}_{{|{\mathsf{f}}{n}|}}({\mathit{lane}}_1)^\ast})} \\ -{\mathsf{neg}}{{}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{{\mathrm{fneg}}}_{{|{\mathsf{f}}{n}|}}({\mathit{lane}}_1)^\ast})} \\ -{\mathsf{sqrt}}{{}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{{\mathrm{fsqrt}}}_{{|{\mathsf{f}}{n}|}}({\mathit{lane}}_1)^\ast})} \\ -{\mathsf{ceil}}{{}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{{\mathrm{fceil}}}_{{|{\mathsf{f}}{n}|}}({\mathit{lane}}_1)^\ast})} \\ -{\mathsf{floor}}{{}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{{\mathrm{ffloor}}}_{{|{\mathsf{f}}{n}|}}({\mathit{lane}}_1)^\ast})} \\ -{\mathsf{trunc}}{{}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{{\mathrm{ftrunc}}}_{{|{\mathsf{f}}{n}|}}({\mathit{lane}}_1)^\ast})} \\ -{\mathsf{nearest}}{{}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{{\mathrm{fnearest}}}_{{|{\mathsf{f}}{n}|}}({\mathit{lane}}_1)^\ast})} \\ -\end{array} -$$ - -$$ -\begin{array}{@{}lcl@{}l@{}} -{\mathsf{add}}{{}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_2) \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{{\mathrm{fadd}}}_{{|{\mathsf{f}}{n}|}}({\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ -{\mathsf{sub}}{{}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_2) \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{{\mathrm{fsub}}}_{{|{\mathsf{f}}{n}|}}({\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ -{\mathsf{mul}}{{}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_2) \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{{\mathrm{fmul}}}_{{|{\mathsf{f}}{n}|}}({\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ -{\mathsf{div}}{{}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_2) \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{{\mathrm{fdiv}}}_{{|{\mathsf{f}}{n}|}}({\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ -{\mathsf{min}}{{}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_2) \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{{\mathrm{fmin}}}_{{|{\mathsf{f}}{n}|}}({\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ -{\mathsf{max}}{{}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_2) \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{{\mathrm{fmax}}}_{{|{\mathsf{f}}{n}|}}({\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ -{\mathsf{pmin}}{{}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_2) \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{{\mathrm{fpmin}}}_{{|{\mathsf{f}}{n}|}}({\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ -{\mathsf{pmax}}{{}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_2) \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{{\mathrm{fpmax}}}_{{|{\mathsf{f}}{n}|}}({\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ -\end{array} -$$ - -$$ -\begin{array}{@{}lcl@{}l@{}} -{\mathsf{eq}}{{}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_2) \\ - &&&\qquad {\land}~{{\mathit{lane}}_3^\ast} = {{{{{\mathrm{ext}}}_{1, {|{\mathsf{f}}{n}|}}^{\mathsf{s}}}}{({{\mathrm{feq}}}_{{|{\mathsf{f}}{n}|}}({\mathit{lane}}_1, {\mathit{lane}}_2))}^\ast} \\ - &&&\qquad {\land}~{|{\mathsf{i}}{n}|} = {|{\mathsf{f}}{n}|} \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{\mathit{lane}}_3^\ast})} \\ -{\mathsf{ne}}{{}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_2) \\ - &&&\qquad {\land}~{{\mathit{lane}}_3^\ast} = {{{{{\mathrm{ext}}}_{1, {|{\mathsf{f}}{n}|}}^{\mathsf{s}}}}{({{\mathrm{fne}}}_{{|{\mathsf{f}}{n}|}}({\mathit{lane}}_1, {\mathit{lane}}_2))}^\ast} \\ - &&&\qquad {\land}~{|{\mathsf{i}}{n}|} = {|{\mathsf{f}}{n}|} \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{\mathit{lane}}_3^\ast})} \\ -{\mathsf{lt}}{{}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_2) \\ - &&&\qquad {\land}~{{\mathit{lane}}_3^\ast} = {{{{{\mathrm{ext}}}_{1, {|{\mathsf{f}}{n}|}}^{\mathsf{s}}}}{({{\mathrm{flt}}}_{{|{\mathsf{f}}{n}|}}({\mathit{lane}}_1, {\mathit{lane}}_2))}^\ast} \\ - &&&\qquad {\land}~{|{\mathsf{i}}{n}|} = {|{\mathsf{f}}{n}|} \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{\mathit{lane}}_3^\ast})} \\ -{\mathsf{gt}}{{}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_2) \\ - &&&\qquad {\land}~{{\mathit{lane}}_3^\ast} = {{{{{\mathrm{ext}}}_{1, {|{\mathsf{f}}{n}|}}^{\mathsf{s}}}}{({{\mathrm{fgt}}}_{{|{\mathsf{f}}{n}|}}({\mathit{lane}}_1, {\mathit{lane}}_2))}^\ast} \\ - &&&\qquad {\land}~{|{\mathsf{i}}{n}|} = {|{\mathsf{f}}{n}|} \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{\mathit{lane}}_3^\ast})} \\ -{\mathsf{le}}{{}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_2) \\ - &&&\qquad {\land}~{{\mathit{lane}}_3^\ast} = {{{{{\mathrm{ext}}}_{1, {|{\mathsf{f}}{n}|}}^{\mathsf{s}}}}{({{\mathrm{fle}}}_{{|{\mathsf{f}}{n}|}}({\mathit{lane}}_1, {\mathit{lane}}_2))}^\ast} \\ - &&&\qquad {\land}~{|{\mathsf{i}}{n}|} = {|{\mathsf{f}}{n}|} \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{\mathit{lane}}_3^\ast})} \\ -{\mathsf{ge}}{{}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}}{({\mathit{v{\scriptstyle128}}}_1,\, {\mathit{v{\scriptstyle128}}}_2)} &=& {\mathit{v{\scriptstyle128}}} - &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_1) \\ - &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{n}}{\mathsf{x}}{N}}({\mathit{v{\scriptstyle128}}}_2) \\ - &&&\qquad {\land}~{{\mathit{lane}}_3^\ast} = {{{{{\mathrm{ext}}}_{1, {|{\mathsf{f}}{n}|}}^{\mathsf{s}}}}{({{\mathrm{fge}}}_{{|{\mathsf{f}}{n}|}}({\mathit{lane}}_1, {\mathit{lane}}_2))}^\ast} \\ - &&&\qquad {\land}~{|{\mathsf{i}}{n}|} = {|{\mathsf{f}}{n}|} \\ - &&&\qquad {\land}~{\mathit{v{\scriptstyle128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{\mathit{lane}}_3^\ast})} \\ -\end{array} -$$ - -$$ -\begin{array}{@{}lcl@{}l@{}} -{\mathrm{vcvtop}}({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{N_1}, {\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{N_2}, \mathsf{extend}, {\mathit{sx}}, {\mathit{i{\scriptstyle8}}}) &=& {\mathit{i{\scriptstyle16}}} - &\qquad \mbox{if}~{\mathit{i{\scriptstyle16}}} = {{{{\mathrm{ext}}}_{8, 16}^{{\mathit{sx}}}}}{({\mathit{i{\scriptstyle8}}})} \\ -{\mathrm{vcvtop}}({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{N_1}, {\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{N_2}, \mathsf{extend}, {\mathit{sx}}, {\mathit{i{\scriptstyle16}}}) &=& {\mathit{i{\scriptstyle32}}} - &\qquad \mbox{if}~{\mathit{i{\scriptstyle32}}} = {{{{\mathrm{ext}}}_{16, 32}^{{\mathit{sx}}}}}{({\mathit{i{\scriptstyle16}}})} \\ -{\mathrm{vcvtop}}({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{N_1}, {\mathsf{i{\scriptstyle64}}}{\mathsf{x}}{N_2}, \mathsf{extend}, {\mathit{sx}}, {\mathit{i{\scriptstyle32}}}) &=& {\mathit{i{\scriptstyle64}}} - &\qquad \mbox{if}~{\mathit{i{\scriptstyle64}}} = {{{{\mathrm{ext}}}_{32, 64}^{{\mathit{sx}}}}}{({\mathit{i{\scriptstyle32}}})} \\ -{\mathrm{vcvtop}}({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{N_1}, {\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{N_2}, \mathsf{convert}, {\mathit{sx}}, {\mathit{i{\scriptstyle32}}}) &=& {\mathit{f{\scriptstyle32}}} - &\qquad \mbox{if}~{\mathit{f{\scriptstyle32}}} = {{{{\mathrm{convert}}}_{32, 32}^{{\mathit{sx}}}}}{({\mathit{i{\scriptstyle32}}})} \\ -{\mathrm{vcvtop}}({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{N_1}, {\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{N_2}, \mathsf{convert}, {\mathit{sx}}, {\mathit{i{\scriptstyle32}}}) &=& {\mathit{f{\scriptstyle64}}} - &\qquad \mbox{if}~{\mathit{f{\scriptstyle64}}} = {{{{\mathrm{convert}}}_{32, 64}^{{\mathit{sx}}}}}{({\mathit{i{\scriptstyle32}}})} \\ -{\mathrm{vcvtop}}({\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{N_1}, {\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{N_2}, \mathsf{trunc\_sat}, {\mathit{sx}}, {\mathit{f{\scriptstyle32}}}) &=& {\mathit{i{\scriptstyle32}}} - &\qquad \mbox{if}~{\mathit{i{\scriptstyle32}}} = {{{{\mathrm{trunc\_sat}}}_{32, 32}^{{\mathit{sx}}}}}{({\mathit{f{\scriptstyle32}}})} \\ -{\mathrm{vcvtop}}({\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{N_1}, {\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{N_2}, \mathsf{trunc\_sat}, {\mathit{sx}}, {\mathit{f{\scriptstyle64}}}) &=& {\mathit{i{\scriptstyle32}}} - &\qquad \mbox{if}~{\mathit{i{\scriptstyle32}}} = {{{{\mathrm{trunc\_sat}}}_{64, 32}^{{\mathit{sx}}}}}{({\mathit{f{\scriptstyle64}}})} \\ -{\mathrm{vcvtop}}({\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{N_1}, {\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{N_2}, \mathsf{demote}, {{\mathit{sx}}^?}, {\mathit{f{\scriptstyle64}}}) &=& {\mathit{f{\scriptstyle32}}} - &\qquad \mbox{if}~{\mathit{f{\scriptstyle32}}} = {{{\mathrm{demote}}}_{64, 32}}{({\mathit{f{\scriptstyle64}}})} \\ -{\mathrm{vcvtop}}({\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{N_1}, {\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{N_2}, \mathsf{promote}, {{\mathit{sx}}^?}, {\mathit{f{\scriptstyle32}}}) &=& {\mathit{f{\scriptstyle64}}} - &\qquad \mbox{if}~{\mathit{f{\scriptstyle64}}} = {{{\mathrm{promote}}}_{32, 64}}{({\mathit{f{\scriptstyle32}}})} \\ +{\mathsf{eq}}{{}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_2) \\ + &&&\qquad {\land}~{{\mathit{lane}}_3^\ast} = {{{{{\mathrm{ext}}}_{1, {|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}^{\mathsf{s}}}}{({{\mathrm{ieq}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1, {\mathit{lane}}_2))}^\ast} \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{\mathit{lane}}_3^\ast})} \\ +{\mathsf{ne}}{{}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_2) \\ + &&&\qquad {\land}~{{\mathit{lane}}_3^\ast} = {{{{{\mathrm{ext}}}_{1, {|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}^{\mathsf{s}}}}{({{\mathrm{ine}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1, {\mathit{lane}}_2))}^\ast} \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{\mathit{lane}}_3^\ast})} \\ +{{\mathsf{lt}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_2) \\ + &&&\qquad {\land}~{{\mathit{lane}}_3^\ast} = {{{{{\mathrm{ext}}}_{1, {|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}^{\mathsf{s}}}}{({{{{\mathrm{ilt}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}^{{\mathit{sx}}}}}{({\mathit{lane}}_1,\, {\mathit{lane}}_2)})}^\ast} \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{\mathit{lane}}_3^\ast})} \\ +{{\mathsf{gt}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_2) \\ + &&&\qquad {\land}~{{\mathit{lane}}_3^\ast} = {{{{{\mathrm{ext}}}_{1, {|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}^{\mathsf{s}}}}{({{{{\mathrm{igt}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}^{{\mathit{sx}}}}}{({\mathit{lane}}_1,\, {\mathit{lane}}_2)})}^\ast} \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{\mathit{lane}}_3^\ast})} \\ +{{\mathsf{le}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_2) \\ + &&&\qquad {\land}~{{\mathit{lane}}_3^\ast} = {{{{{\mathrm{ext}}}_{1, {|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}^{\mathsf{s}}}}{({{{{\mathrm{ile}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}^{{\mathit{sx}}}}}{({\mathit{lane}}_1,\, {\mathit{lane}}_2)})}^\ast} \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{\mathit{lane}}_3^\ast})} \\ +{{\mathsf{ge}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_2) \\ + &&&\qquad {\land}~{{\mathit{lane}}_3^\ast} = {{{{{\mathrm{ext}}}_{1, {|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}^{\mathsf{s}}}}{({{{{\mathrm{ige}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}^{{\mathit{sx}}}}}{({\mathit{lane}}_1,\, {\mathit{lane}}_2)})}^\ast} \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{\mathit{lane}}_3^\ast})} \\ +\end{array} +$$ + +$$ +\begin{array}{@{}lcl@{}l@{}} +{\mathsf{abs}}{{}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{{\mathrm{fabs}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1)^\ast})} \\ +{\mathsf{neg}}{{}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{{\mathrm{fneg}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1)^\ast})} \\ +{\mathsf{sqrt}}{{}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{{\mathrm{fsqrt}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1)^\ast})} \\ +{\mathsf{ceil}}{{}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{{\mathrm{fceil}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1)^\ast})} \\ +{\mathsf{floor}}{{}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{{\mathrm{ffloor}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1)^\ast})} \\ +{\mathsf{trunc}}{{}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{{\mathrm{ftrunc}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1)^\ast})} \\ +{\mathsf{nearest}}{{}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{{\mathrm{fnearest}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1)^\ast})} \\ +\end{array} +$$ + +$$ +\begin{array}{@{}lcl@{}l@{}} +{\mathsf{add}}{{}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_2) \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{{\mathrm{fadd}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ +{\mathsf{sub}}{{}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_2) \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{{\mathrm{fsub}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ +{\mathsf{mul}}{{}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_2) \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{{\mathrm{fmul}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ +{\mathsf{div}}{{}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_2) \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{{\mathrm{fdiv}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ +{\mathsf{min}}{{}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_2) \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{{\mathrm{fmin}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ +{\mathsf{max}}{{}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_2) \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{{\mathrm{fmax}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ +{\mathsf{pmin}}{{}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_2) \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{{\mathrm{fpmin}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ +{\mathsf{pmax}}{{}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_2) \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{{\mathrm{fpmax}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1, {\mathit{lane}}_2)^\ast})} \\ +\end{array} +$$ + +$$ +\begin{array}{@{}lcl@{}l@{}} +{\mathsf{eq}}{{}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_2) \\ + &&&\qquad {\land}~{{\mathit{lane}}_3^\ast} = {{{{{\mathrm{ext}}}_{1, {|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}^{\mathsf{s}}}}{({{\mathrm{feq}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1, {\mathit{lane}}_2))}^\ast} \\ + &&&\qquad {\land}~{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|} = {|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|} \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{\mathit{lane}}_3^\ast})} \\ +{\mathsf{ne}}{{}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_2) \\ + &&&\qquad {\land}~{{\mathit{lane}}_3^\ast} = {{{{{\mathrm{ext}}}_{1, {|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}^{\mathsf{s}}}}{({{\mathrm{fne}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1, {\mathit{lane}}_2))}^\ast} \\ + &&&\qquad {\land}~{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|} = {|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|} \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{\mathit{lane}}_3^\ast})} \\ +{\mathsf{lt}}{{}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_2) \\ + &&&\qquad {\land}~{{\mathit{lane}}_3^\ast} = {{{{{\mathrm{ext}}}_{1, {|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}^{\mathsf{s}}}}{({{\mathrm{flt}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1, {\mathit{lane}}_2))}^\ast} \\ + &&&\qquad {\land}~{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|} = {|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|} \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{\mathit{lane}}_3^\ast})} \\ +{\mathsf{gt}}{{}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_2) \\ + &&&\qquad {\land}~{{\mathit{lane}}_3^\ast} = {{{{{\mathrm{ext}}}_{1, {|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}^{\mathsf{s}}}}{({{\mathrm{fgt}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1, {\mathit{lane}}_2))}^\ast} \\ + &&&\qquad {\land}~{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|} = {|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|} \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{\mathit{lane}}_3^\ast})} \\ +{\mathsf{le}}{{}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_2) \\ + &&&\qquad {\land}~{{\mathit{lane}}_3^\ast} = {{{{{\mathrm{ext}}}_{1, {|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}^{\mathsf{s}}}}{({{\mathrm{fle}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1, {\mathit{lane}}_2))}^\ast} \\ + &&&\qquad {\land}~{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|} = {|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|} \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{\mathit{lane}}_3^\ast})} \\ +{\mathsf{ge}}{{}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{v{\scriptstyle 128}}}_1,\, {\mathit{v{\scriptstyle 128}}}_2)} &=& {\mathit{v{\scriptstyle 128}}} + &\qquad \mbox{if}~{{\mathit{lane}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_1) \\ + &&&\qquad {\land}~{{\mathit{lane}}_2^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}({\mathit{v{\scriptstyle 128}}}_2) \\ + &&&\qquad {\land}~{{\mathit{lane}}_3^\ast} = {{{{{\mathrm{ext}}}_{1, {|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}^{\mathsf{s}}}}{({{\mathrm{fge}}}_{{|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}_1, {\mathit{lane}}_2))}^\ast} \\ + &&&\qquad {\land}~{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|} = {|{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}|} \\ + &&&\qquad {\land}~{\mathit{v{\scriptstyle 128}}} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{\mathit{lane}}_3^\ast})} \\ +\end{array} +$$ + +$$ +\begin{array}{@{}lcl@{}l@{}} +{\mathrm{vcvtop}}({\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_1}, {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_2}, \mathsf{extend}, {\mathit{sx}}, {\mathit{i{\scriptstyle 8}}}) &=& {\mathit{i{\scriptstyle 16}}} + &\qquad \mbox{if}~{\mathit{i{\scriptstyle 16}}} = {{{{\mathrm{ext}}}_{8, 16}^{{\mathit{sx}}}}}{({\mathit{i{\scriptstyle 8}}})} \\ +{\mathrm{vcvtop}}({\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_1}, {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_2}, \mathsf{extend}, {\mathit{sx}}, {\mathit{i{\scriptstyle 16}}}) &=& {\mathit{i{\scriptstyle 32}}} + &\qquad \mbox{if}~{\mathit{i{\scriptstyle 32}}} = {{{{\mathrm{ext}}}_{16, 32}^{{\mathit{sx}}}}}{({\mathit{i{\scriptstyle 16}}})} \\ +{\mathrm{vcvtop}}({\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_1}, {\mathsf{i{\scriptstyle 64}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_2}, \mathsf{extend}, {\mathit{sx}}, {\mathit{i{\scriptstyle 32}}}) &=& {\mathit{i{\scriptstyle 64}}} + &\qquad \mbox{if}~{\mathit{i{\scriptstyle 64}}} = {{{{\mathrm{ext}}}_{32, 64}^{{\mathit{sx}}}}}{({\mathit{i{\scriptstyle 32}}})} \\ +{\mathrm{vcvtop}}({\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_1}, {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_2}, \mathsf{convert}, {\mathit{sx}}, {\mathit{i{\scriptstyle 32}}}) &=& {\mathit{f{\scriptstyle 32}}} + &\qquad \mbox{if}~{\mathit{f{\scriptstyle 32}}} = {{{{\mathrm{convert}}}_{32, 32}^{{\mathit{sx}}}}}{({\mathit{i{\scriptstyle 32}}})} \\ +{\mathrm{vcvtop}}({\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_1}, {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_2}, \mathsf{convert}, {\mathit{sx}}, {\mathit{i{\scriptstyle 32}}}) &=& {\mathit{f{\scriptstyle 64}}} + &\qquad \mbox{if}~{\mathit{f{\scriptstyle 64}}} = {{{{\mathrm{convert}}}_{32, 64}^{{\mathit{sx}}}}}{({\mathit{i{\scriptstyle 32}}})} \\ +{\mathrm{vcvtop}}({\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_1}, {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_2}, \mathsf{trunc\_sat}, {\mathit{sx}}, {\mathit{f{\scriptstyle 32}}}) &=& {\mathit{i{\scriptstyle 32}}} + &\qquad \mbox{if}~{\mathit{i{\scriptstyle 32}}} = {{{{\mathrm{trunc\_sat}}}_{32, 32}^{{\mathit{sx}}}}}{({\mathit{f{\scriptstyle 32}}})} \\ +{\mathrm{vcvtop}}({\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_1}, {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_2}, \mathsf{trunc\_sat}, {\mathit{sx}}, {\mathit{f{\scriptstyle 64}}}) &=& {\mathit{i{\scriptstyle 32}}} + &\qquad \mbox{if}~{\mathit{i{\scriptstyle 32}}} = {{{{\mathrm{trunc\_sat}}}_{64, 32}^{{\mathit{sx}}}}}{({\mathit{f{\scriptstyle 64}}})} \\ +{\mathrm{vcvtop}}({\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_1}, {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_2}, \mathsf{demote}, {{\mathit{sx}}^?}, {\mathit{f{\scriptstyle 64}}}) &=& {\mathit{f{\scriptstyle 32}}} + &\qquad \mbox{if}~{\mathit{f{\scriptstyle 32}}} = {{{\mathrm{demote}}}_{64, 32}}{({\mathit{f{\scriptstyle 64}}})} \\ +{\mathrm{vcvtop}}({\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_1}, {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_2}, \mathsf{promote}, {{\mathit{sx}}^?}, {\mathit{f{\scriptstyle 32}}}) &=& {\mathit{f{\scriptstyle 64}}} + &\qquad \mbox{if}~{\mathit{f{\scriptstyle 64}}} = {{{\mathrm{promote}}}_{32, 64}}{({\mathit{f{\scriptstyle 32}}})} \\ \end{array} -$$ - -$$ -\begin{array}{@{}lcl@{}l@{}} -{\mathrm{vextunop}}({{{\mathsf{i}}{n}}_1}{\mathsf{x}}{N_1}, {{{\mathsf{i}}{n}}_2}{\mathsf{x}}{N_2}, \mathsf{extadd\_pairwise}, {\mathit{sx}}, c_1) &=& c - &\qquad \mbox{if}~{{\mathit{ci}}^\ast} = {{\mathrm{lanes}}}_{{{{\mathsf{i}}{n}}_2}{\mathsf{x}}{N_2}}(c_1) \\ - &&&\qquad {\land}~{\mathrm{concat}}({({\mathit{cj}}_1~{\mathit{cj}}_2)^\ast}) = {{{{{\mathrm{ext}}}_{{|{{\mathsf{i}}{n}}_2|}, {|{{\mathsf{i}}{n}}_1|}}^{{\mathit{sx}}}}}{({\mathit{ci}})}^\ast} \\ - &&&\qquad {\land}~c = {{{{\mathrm{lanes}}}_{{{{\mathsf{i}}{n}}_1}{\mathsf{x}}{N_1}}^{{-1}}}}{({{{\mathrm{iadd}}}_{{|{{\mathsf{i}}{n}}_1|}}({\mathit{cj}}_1, {\mathit{cj}}_2)^\ast})} \\ -\end{array} -$$ - -$$ -\begin{array}{@{}lcl@{}l@{}} -{\mathrm{vextbinop}}({{{\mathsf{i}}{n}}_1}{\mathsf{x}}{N_1}, {{{\mathsf{i}}{n}}_2}{\mathsf{x}}{N_2}, {\mathsf{extmul}}{\mathsf{\_}}{{\mathit{hf}}}, {\mathit{sx}}, c_1, c_2) &=& c - &\qquad \mbox{if}~{{\mathit{ci}}_1^\ast} = {{\mathrm{lanes}}}_{{{{\mathsf{i}}{n}}_2}{\mathsf{x}}{N_2}}(c_1){}[{\mathrm{half}}({\mathit{hf}}, 0, N_1) : N_1] \\ - &&&\qquad {\land}~{{\mathit{ci}}_2^\ast} = {{\mathrm{lanes}}}_{{{{\mathsf{i}}{n}}_2}{\mathsf{x}}{N_2}}(c_2){}[{\mathrm{half}}({\mathit{hf}}, 0, N_1) : N_1] \\ - &&&\qquad {\land}~c = {{{{\mathrm{lanes}}}_{{{{\mathsf{i}}{n}}_1}{\mathsf{x}}{N_1}}^{{-1}}}}{({{{\mathrm{imul}}}_{{|{{\mathsf{i}}{n}}_1|}}({{{{\mathrm{ext}}}_{{|{{\mathsf{i}}{n}}_2|}, {|{{\mathsf{i}}{n}}_1|}}^{{\mathit{sx}}}}}{({\mathit{ci}}_1)}, {{{{\mathrm{ext}}}_{{|{{\mathsf{i}}{n}}_2|}, {|{{\mathsf{i}}{n}}_1|}}^{{\mathit{sx}}}}}{({\mathit{ci}}_2)})^\ast})} \\ -{\mathrm{vextbinop}}({{{\mathsf{i}}{n}}_1}{\mathsf{x}}{N_1}, {{{\mathsf{i}}{n}}_2}{\mathsf{x}}{N_2}, \mathsf{dot}, {\mathit{sx}}, c_1, c_2) &=& c - &\qquad \mbox{if}~{{\mathit{ci}}_1^\ast} = {{\mathrm{lanes}}}_{{{{\mathsf{i}}{n}}_2}{\mathsf{x}}{N_2}}(c_1) \\ - &&&\qquad {\land}~{{\mathit{ci}}_2^\ast} = {{\mathrm{lanes}}}_{{{{\mathsf{i}}{n}}_2}{\mathsf{x}}{N_2}}(c_2) \\ - &&&\qquad {\land}~{\mathrm{concat}}({({\mathit{cj}}_1~{\mathit{cj}}_2)^\ast}) = {{{\mathrm{imul}}}_{{|{{\mathsf{i}}{n}}_1|}}({{{{\mathrm{ext}}}_{{|{{\mathsf{i}}{n}}_2|}, {|{{\mathsf{i}}{n}}_1|}}^{\mathsf{s}}}}{({\mathit{ci}}_1)}, {{{{\mathrm{ext}}}_{{|{{\mathsf{i}}{n}}_2|}, {|{{\mathsf{i}}{n}}_1|}}^{\mathsf{s}}}}{({\mathit{ci}}_2)})^\ast} \\ - &&&\qquad {\land}~c = {{{{\mathrm{lanes}}}_{{{{\mathsf{i}}{n}}_1}{\mathsf{x}}{N_1}}^{{-1}}}}{({{{\mathrm{iadd}}}_{{|{{\mathsf{i}}{n}}_1|}}({\mathit{cj}}_1, {\mathit{cj}}_2)^\ast})} \\ +$$ + +$$ +\begin{array}{@{}lcl@{}l@{}} +{\mathrm{vextunop}}({{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_1}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_1}, {{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_2}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_2}, \mathsf{extadd\_pairwise}, {\mathit{sx}}, c_1) &=& c + &\qquad \mbox{if}~{{\mathit{ci}}^\ast} = {{\mathrm{lanes}}}_{{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_2}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_2}}(c_1) \\ + &&&\qquad {\land}~{\mathrm{concat}}({({\mathit{cj}}_1~{\mathit{cj}}_2)^\ast}) = {{{{{\mathrm{ext}}}_{{|{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_2|}, {|{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_1|}}^{{\mathit{sx}}}}}{({\mathit{ci}})}^\ast} \\ + &&&\qquad {\land}~c = {{{{\mathrm{lanes}}}_{{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_1}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_1}}^{{-1}}}}{({{{\mathrm{iadd}}}_{{|{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_1|}}({\mathit{cj}}_1, {\mathit{cj}}_2)^\ast})} \\ +\end{array} +$$ + +$$ +\begin{array}{@{}lcl@{}l@{}} +{\mathrm{vextbinop}}({{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_1}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_1}, {{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_2}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_2}, {\mathsf{extmul}}{\mathsf{\_}}{{\mathit{hf}}}, {\mathit{sx}}, c_1, c_2) &=& c + &\qquad \mbox{if}~{{\mathit{ci}}_1^\ast} = {{\mathrm{lanes}}}_{{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_2}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_2}}(c_1){}[{\mathrm{half}}({\mathit{hf}}, 0, {\mathit{{\scriptstyle N}}}_1) : {\mathit{{\scriptstyle N}}}_1] \\ + &&&\qquad {\land}~{{\mathit{ci}}_2^\ast} = {{\mathrm{lanes}}}_{{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_2}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_2}}(c_2){}[{\mathrm{half}}({\mathit{hf}}, 0, {\mathit{{\scriptstyle N}}}_1) : {\mathit{{\scriptstyle N}}}_1] \\ + &&&\qquad {\land}~c = {{{{\mathrm{lanes}}}_{{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_1}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_1}}^{{-1}}}}{({{{\mathrm{imul}}}_{{|{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_1|}}({{{{\mathrm{ext}}}_{{|{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_2|}, {|{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_1|}}^{{\mathit{sx}}}}}{({\mathit{ci}}_1)}, {{{{\mathrm{ext}}}_{{|{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_2|}, {|{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_1|}}^{{\mathit{sx}}}}}{({\mathit{ci}}_2)})^\ast})} \\ +{\mathrm{vextbinop}}({{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_1}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_1}, {{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_2}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_2}, \mathsf{dot}, {\mathit{sx}}, c_1, c_2) &=& c + &\qquad \mbox{if}~{{\mathit{ci}}_1^\ast} = {{\mathrm{lanes}}}_{{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_2}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_2}}(c_1) \\ + &&&\qquad {\land}~{{\mathit{ci}}_2^\ast} = {{\mathrm{lanes}}}_{{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_2}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_2}}(c_2) \\ + &&&\qquad {\land}~{\mathrm{concat}}({({\mathit{cj}}_1~{\mathit{cj}}_2)^\ast}) = {{{\mathrm{imul}}}_{{|{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_1|}}({{{{\mathrm{ext}}}_{{|{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_2|}, {|{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_1|}}^{\mathsf{s}}}}{({\mathit{ci}}_1)}, {{{{\mathrm{ext}}}_{{|{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_2|}, {|{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_1|}}^{\mathsf{s}}}}{({\mathit{ci}}_2)})^\ast} \\ + &&&\qquad {\land}~c = {{{{\mathrm{lanes}}}_{{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_1}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}_1}}^{{-1}}}}{({{{\mathrm{iadd}}}_{{|{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_1|}}({\mathit{cj}}_1, {\mathit{cj}}_2)^\ast})} \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} -{\mathsf{shl}}{{}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}}{({\mathit{lane}},\, n)} &=& {{\mathrm{ishl}}}_{{|{\mathsf{i}}{n}|}}({\mathit{lane}}, n) \\ -{{\mathsf{shr}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}}{({\mathit{lane}},\, n)} &=& {{{{\mathrm{ishr}}}_{{|{\mathsf{i}}{n}|}}^{{\mathit{sx}}}}}{({\mathit{lane}},\, n)} \\ +{\mathsf{shl}}{{}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{lane}},\, n)} &=& {{\mathrm{ishl}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}({\mathit{lane}}, n) \\ +{{\mathsf{shr}}{\mathsf{\_}}{{\mathit{sx}}}}{{}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({\mathit{lane}},\, n)} &=& {{{{\mathrm{ishr}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}^{{\mathit{sx}}}}}{({\mathit{lane}},\, n)} \\ \end{array} $$ @@ -2924,7 +2924,7 @@ $$ \begin{array}{@{}lrrl@{}l@{}} \mbox{(number value)} & {\mathit{num}} &::=& {\mathit{numtype}}{.}\mathsf{const}~{{\mathit{num}}}_{{\mathit{numtype}}} \\ \mbox{(vector value)} & {\mathit{vec}} &::=& {\mathit{vectype}}{.}\mathsf{const}~{{\mathit{vec}}}_{{\mathit{vectype}}} \\ -\mbox{(address value)} & {\mathit{addrref}} &::=& \mathsf{ref.i{\scriptstyle31}}~{\mathit{u{\scriptstyle31}}} \\ &&|& +\mbox{(address value)} & {\mathit{addrref}} &::=& \mathsf{ref.i{\scriptstyle 31}}~{\mathit{u{\scriptstyle 31}}} \\ &&|& \mathsf{ref.struct}~{\mathit{structaddr}} \\ &&|& \mathsf{ref.array}~{\mathit{arrayaddr}} \\ &&|& \mathsf{ref.func}~{\mathit{funcaddr}} \\ &&|& @@ -3040,11 +3040,11 @@ $$ $$ \begin{array}{@{}lcl@{}l@{}} -{{\mathrm{default}}}_{\mathsf{i{\scriptstyle32}}} &=& (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~0) \\ -{{\mathrm{default}}}_{\mathsf{i{\scriptstyle64}}} &=& (\mathsf{i{\scriptstyle64}}{.}\mathsf{const}~0) \\ -{{\mathrm{default}}}_{\mathsf{f{\scriptstyle32}}} &=& (\mathsf{f{\scriptstyle32}}{.}\mathsf{const}~{+0}) \\ -{{\mathrm{default}}}_{\mathsf{f{\scriptstyle64}}} &=& (\mathsf{f{\scriptstyle64}}{.}\mathsf{const}~{+0}) \\ -{{\mathrm{default}}}_{\mathsf{v{\scriptstyle128}}} &=& (\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~0) \\ +{{\mathrm{default}}}_{\mathsf{i{\scriptstyle 32}}} &=& (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~0) \\ +{{\mathrm{default}}}_{\mathsf{i{\scriptstyle 64}}} &=& (\mathsf{i{\scriptstyle 64}}{.}\mathsf{const}~0) \\ +{{\mathrm{default}}}_{\mathsf{f{\scriptstyle 32}}} &=& (\mathsf{f{\scriptstyle 32}}{.}\mathsf{const}~{+0}) \\ +{{\mathrm{default}}}_{\mathsf{f{\scriptstyle 64}}} &=& (\mathsf{f{\scriptstyle 64}}{.}\mathsf{const}~{+0}) \\ +{{\mathrm{default}}}_{\mathsf{v{\scriptstyle 128}}} &=& (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~0) \\ {{\mathrm{default}}}_{\mathsf{ref}~\mathsf{null}~{\mathit{ht}}} &=& (\mathsf{ref.null}~{\mathit{ht}}) \\ {{\mathrm{default}}}_{\mathsf{ref}~\epsilon~{\mathit{ht}}} &=& \epsilon \\ \end{array} @@ -3055,14 +3055,14 @@ $$ $$ \begin{array}{@{}lcl@{}l@{}} {{\mathrm{pack}}}_{t}({\mathit{val}}) &=& {\mathit{val}} \\ -{{\mathrm{pack}}}_{{\mathit{pt}}}(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i) &=& {\mathit{pt}}{.}\mathsf{pack}~{{{\mathrm{wrap}}}_{32, {|{\mathit{pt}}|}}}{(i)} \\ +{{\mathrm{pack}}}_{{\mathit{pt}}}(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i) &=& {\mathit{pt}}{.}\mathsf{pack}~{{{\mathrm{wrap}}}_{32, {|{\mathit{pt}}|}}}{(i)} \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} {{{{\mathrm{unpack}}}_{t}^{\epsilon}}}{({\mathit{val}})} &=& {\mathit{val}} \\ -{{{{\mathrm{unpack}}}_{{\mathit{pt}}}^{{\mathit{sx}}}}}{({\mathit{pt}}{.}\mathsf{pack}~i)} &=& \mathsf{i{\scriptstyle32}}{.}\mathsf{const}~{{{{\mathrm{ext}}}_{{|{\mathit{pt}}|}, 32}^{{\mathit{sx}}}}}{(i)} \\ +{{{{\mathrm{unpack}}}_{{\mathit{pt}}}^{{\mathit{sx}}}}}{({\mathit{pt}}{.}\mathsf{pack}~i)} &=& \mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~{{{{\mathrm{ext}}}_{{|{\mathit{pt}}|}, 32}^{{\mathit{sx}}}}}{(i)} \\ \end{array} $$ @@ -3314,10 +3314,10 @@ $$ \begin{array}{@{}lcl@{}l@{}} {\mathrm{growmem}}({\mathit{mi}}, n) &=& {\mathit{mi}'} &\qquad \mbox{if}~{\mathit{mi}} = \{ \begin{array}[t]{@{}l@{}} -\mathsf{type}~({}[ i .. j ]~\mathsf{i{\scriptstyle8}}),\; \mathsf{bytes}~{b^\ast} \}\end{array} \\ - &&&\qquad {\land}~{i'} = {|{b^\ast}|} / (64 \, {\mathrm{Ki}}) + n \\ +\mathsf{type}~({}[ i .. j ]~\mathsf{i{\scriptstyle 8}}),\; \mathsf{bytes}~{b^\ast} \}\end{array} \\ + &&&\qquad {\land}~{i'} = {|{b^\ast}|} / (64 \, {\mathrm{{\scriptstyle K}i}}) + n \\ &&&\qquad {\land}~{\mathit{mi}'} = \{ \begin{array}[t]{@{}l@{}} -\mathsf{type}~({}[ {i'} .. j ]~\mathsf{i{\scriptstyle8}}),\; \mathsf{bytes}~{b^\ast}~{0^{n \cdot 64 \, {\mathrm{Ki}}}} \}\end{array} \\ +\mathsf{type}~({}[ {i'} .. j ]~\mathsf{i{\scriptstyle 8}}),\; \mathsf{bytes}~{b^\ast}~{0^{n \cdot 64 \, {\mathrm{{\scriptstyle K}i}}}} \}\end{array} \\ &&&\qquad {\land}~{i'} \leq j \\ \end{array} $$ @@ -3346,8 +3346,8 @@ $$ $$ \begin{array}{@{}lcl@{}l@{}} -C{}[\mathsf{local}{}[\epsilon] = \epsilon] &=& C \\ -C{}[\mathsf{local}{}[x_1~{x^\ast}] = {{\mathit{lt}}}_1~{{{\mathit{lt}}}^\ast}] &=& C{}[\mathsf{locals}{}[x_1] = {{\mathit{lt}}}_1]{}[\mathsf{local}{}[{x^\ast}] = {{{\mathit{lt}}}^\ast}] \\ +{\mathit{{\scriptstyle C}}}{}[\mathsf{local}{}[\epsilon] = \epsilon] &=& {\mathit{{\scriptstyle C}}} \\ +{\mathit{{\scriptstyle C}}}{}[\mathsf{local}{}[x_1~{x^\ast}] = {{\mathit{lt}}}_1~{{{\mathit{lt}}}^\ast}] &=& {\mathit{{\scriptstyle C}}}{}[\mathsf{locals}{}[x_1] = {{\mathit{lt}}}_1]{}[\mathsf{local}{}[{x^\ast}] = {{{\mathit{lt}}}^\ast}] \\ \end{array} $$ @@ -3355,15 +3355,15 @@ $$ $$ \begin{array}{@{}lcl@{}l@{}} -{\mathrm{clos}}~C~({\mathit{dt}}) &=& {{\mathit{dt}}}{{}[ { := }\;{{\mathit{dt}'}^\ast} ]} - &\qquad \mbox{if}~{{\mathit{dt}'}^\ast} = {\mathrm{clos}}~{}^\ast~(C{.}\mathsf{types}) \\ +{\mathrm{clos}}~{\mathit{{\scriptstyle C}}}~({\mathit{dt}}) &=& {{\mathit{dt}}}{{}[ { := }\;{{\mathit{dt}'}^\ast} ]} + &\qquad \mbox{if}~{{\mathit{dt}'}^\ast} = {\mathrm{clos}}~{}^\ast~({\mathit{{\scriptstyle C}}}{.}\mathsf{types}) \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} {\mathrm{clos}}~{}^\ast~(\epsilon) &=& \epsilon \\ -{\mathrm{clos}}~{}^\ast~({{\mathit{dt}}^\ast}~{\mathit{dt}}_N) &=& {{\mathit{dt}'}^\ast}~{{\mathit{dt}}_N}{{}[ { := }\;{{\mathit{dt}'}^\ast} ]} +{\mathrm{clos}}~{}^\ast~({{\mathit{dt}}^\ast}~{\mathit{dt}}_{\mathit{{\scriptstyle N}}}) &=& {{\mathit{dt}'}^\ast}~{{\mathit{dt}}_{\mathit{{\scriptstyle N}}}}{{}[ { := }\;{{\mathit{dt}'}^\ast} ]} &\qquad \mbox{if}~{{\mathit{dt}'}^\ast} = {\mathrm{clos}}~{}^\ast~({{\mathit{dt}}^\ast}) \\ \end{array} $$ @@ -3388,7 +3388,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash {\mathit{numtype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{numtype}} : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}num}]} \qquad \end{array} @@ -3398,7 +3398,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash {\mathit{vectype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{vectype}} : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}vec}]} \qquad \end{array} @@ -3408,7 +3408,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash {\mathit{absheaptype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{absheaptype}} : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}heap{-}abs}]} \qquad \end{array} @@ -3417,9 +3417,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{types}{}[{\mathit{typeidx}}] = {\mathit{dt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{types}{}[{\mathit{typeidx}}] = {\mathit{dt}} }{ -C \vdash {\mathit{typeidx}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{typeidx}} : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}heap{-}typeidx}]} \qquad \end{array} @@ -3428,9 +3428,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{rec}{}[i] = {\mathit{st}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{rec}{}[i] = {\mathit{st}} }{ -C \vdash \mathsf{rec}~i : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{rec}~i : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}heap{-}rec}]} \qquad \end{array} @@ -3439,9 +3439,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{heaptype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{heaptype}} : \mathsf{ok} }{ -C \vdash \mathsf{ref}~{\mathsf{null}^?}~{\mathit{heaptype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{ref}~{\mathsf{null}^?}~{\mathit{heaptype}} : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}ref}]} \qquad \end{array} @@ -3450,9 +3450,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{numtype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{numtype}} : \mathsf{ok} }{ -C \vdash {\mathit{numtype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{numtype}} : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}val{-}num}]} \qquad \end{array} @@ -3461,9 +3461,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{vectype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{vectype}} : \mathsf{ok} }{ -C \vdash {\mathit{vectype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{vectype}} : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}val{-}vec}]} \qquad \end{array} @@ -3472,9 +3472,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{reftype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{reftype}} : \mathsf{ok} }{ -C \vdash {\mathit{reftype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{reftype}} : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}val{-}ref}]} \qquad \end{array} @@ -3484,7 +3484,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \mathsf{bot} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{bot} : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}val{-}bot}]} \qquad \end{array} @@ -3499,9 +3499,9 @@ $\boxed{{\mathit{context}} \vdash {\mathit{instrtype}} : \mathsf{ok}}$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -(C \vdash t : \mathsf{ok})^\ast +({\mathit{{\scriptstyle C}}} \vdash t : \mathsf{ok})^\ast }{ -C \vdash {t^\ast} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {t^\ast} : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}result}]} \qquad \end{array} @@ -3510,13 +3510,13 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {t_1^\ast} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {t_1^\ast} : \mathsf{ok} \qquad -C \vdash {t_2^\ast} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {t_2^\ast} : \mathsf{ok} \qquad -(C{.}\mathsf{locals}{}[x] = {{\mathit{lt}}})^\ast +({\mathit{{\scriptstyle C}}}{.}\mathsf{locals}{}[x] = {{\mathit{lt}}})^\ast }{ -C \vdash {t_1^\ast}~{\rightarrow}_{{x^\ast}}\,{t_2^\ast} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {t_1^\ast}~{\rightarrow}_{{x^\ast}}\,{t_2^\ast} : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}instr}]} \qquad \end{array} @@ -3561,7 +3561,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash {\mathit{packtype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{packtype}} : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}pack}]} \qquad \end{array} @@ -3570,9 +3570,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{valtype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{valtype}} : \mathsf{ok} }{ -C \vdash {\mathit{valtype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{valtype}} : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}storage{-}val}]} \qquad \end{array} @@ -3581,9 +3581,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{packtype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{packtype}} : \mathsf{ok} }{ -C \vdash {\mathit{packtype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{packtype}} : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}storage{-}pack}]} \qquad \end{array} @@ -3592,9 +3592,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{storagetype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{storagetype}} : \mathsf{ok} }{ -C \vdash {\mathsf{mut}^?}~{\mathit{storagetype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathsf{mut}^?}~{\mathit{storagetype}} : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}field}]} \qquad \end{array} @@ -3605,9 +3605,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -(C \vdash {\mathit{fieldtype}} : \mathsf{ok})^\ast +({\mathit{{\scriptstyle C}}} \vdash {\mathit{fieldtype}} : \mathsf{ok})^\ast }{ -C \vdash \mathsf{struct}~{{\mathit{fieldtype}}^\ast} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{struct}~{{\mathit{fieldtype}}^\ast} : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}comp{-}struct}]} \qquad \end{array} @@ -3616,9 +3616,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{fieldtype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{fieldtype}} : \mathsf{ok} }{ -C \vdash \mathsf{array}~{\mathit{fieldtype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{array}~{\mathit{fieldtype}} : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}comp{-}array}]} \qquad \end{array} @@ -3627,9 +3627,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{functype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{functype}} : \mathsf{ok} }{ -C \vdash \mathsf{func}~{\mathit{functype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{func}~{\mathit{functype}} : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}comp{-}func}]} \qquad \end{array} @@ -3645,14 +3645,14 @@ $$ \qquad (x < x_0)^\ast \qquad -({\mathrm{unroll}}(C{.}\mathsf{types}{}[x]) = \mathsf{sub}~{{x'}^\ast}~{\mathit{comptype}'})^\ast +({\mathrm{unroll}}({\mathit{{\scriptstyle C}}}{.}\mathsf{types}{}[x]) = \mathsf{sub}~{{x'}^\ast}~{\mathit{comptype}'})^\ast \\ -C \vdash {\mathit{comptype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{comptype}} : \mathsf{ok} \qquad -(C \vdash {\mathit{comptype}} \leq {\mathit{comptype}'})^\ast +({\mathit{{\scriptstyle C}}} \vdash {\mathit{comptype}} \leq {\mathit{comptype}'})^\ast \end{array} }{ -C \vdash \mathsf{sub}~{\mathsf{final}^?}~{{\mathit{typeidx}}^\ast}~{\mathit{comptype}} : {\mathsf{ok}}{(x_0)} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{sub}~{\mathsf{final}^?}~{{\mathit{typeidx}}^\ast}~{\mathit{comptype}} : {\mathsf{ok}}{(x_0)} } \, {[\textsc{\scriptsize K{-}sub}]} \qquad \end{array} @@ -3668,9 +3668,9 @@ $$ $$ \begin{array}{@{}lcl@{}l@{}} -{{\mathrm{unroll}}}_{C}({\mathit{deftype}}) &=& {\mathrm{unroll}}({\mathit{deftype}}) \\ -{{\mathrm{unroll}}}_{C}({\mathit{typeidx}}) &=& {\mathrm{unroll}}(C{.}\mathsf{types}{}[{\mathit{typeidx}}]) \\ -{{\mathrm{unroll}}}_{C}(\mathsf{rec}~i) &=& C{.}\mathsf{rec}{}[i] \\ +{{\mathrm{unroll}}}_{{\mathit{{\scriptstyle C}}}}({\mathit{deftype}}) &=& {\mathrm{unroll}}({\mathit{deftype}}) \\ +{{\mathrm{unroll}}}_{{\mathit{{\scriptstyle C}}}}({\mathit{typeidx}}) &=& {\mathrm{unroll}}({\mathit{{\scriptstyle C}}}{.}\mathsf{types}{}[{\mathit{typeidx}}]) \\ +{{\mathrm{unroll}}}_{{\mathit{{\scriptstyle C}}}}(\mathsf{rec}~i) &=& {\mathit{{\scriptstyle C}}}{.}\mathsf{rec}{}[i] \\ \end{array} $$ @@ -3682,14 +3682,14 @@ $$ \qquad ({\mathit{typeuse}} \prec x, i)^\ast \qquad -({{\mathrm{unroll}}}_{C}({\mathit{typeuse}}) = \mathsf{sub}~{{\mathit{typeuse}'}^\ast}~{\mathit{comptype}'})^\ast +({{\mathrm{unroll}}}_{{\mathit{{\scriptstyle C}}}}({\mathit{typeuse}}) = \mathsf{sub}~{{\mathit{typeuse}'}^\ast}~{\mathit{comptype}'})^\ast \\ -C \vdash {\mathit{comptype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{comptype}} : \mathsf{ok} \qquad -(C \vdash {\mathit{comptype}} \leq {\mathit{comptype}'})^\ast +({\mathit{{\scriptstyle C}}} \vdash {\mathit{comptype}} \leq {\mathit{comptype}'})^\ast \end{array} }{ -C \vdash \mathsf{sub}~{\mathsf{final}^?}~{{\mathit{typeuse}}^\ast}~{\mathit{compttype}} : {\mathsf{ok}}{(x,\, i)} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{sub}~{\mathsf{final}^?}~{{\mathit{typeuse}}^\ast}~{\mathit{compttype}} : {\mathsf{ok}}{(x,\, i)} } \, {[\textsc{\scriptsize K{-}sub2}]} \qquad \end{array} @@ -3701,7 +3701,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \mathsf{rec}~\epsilon : {\mathsf{ok}}{(x)} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{rec}~\epsilon : {\mathsf{ok}}{(x)} } \, {[\textsc{\scriptsize K{-}rect{-}empty}]} \qquad \end{array} @@ -3710,11 +3710,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{subtype}}_1 : {\mathsf{ok}}{(x)} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{subtype}}_1 : {\mathsf{ok}}{(x)} \qquad -C \vdash \mathsf{rec}~{{\mathit{subtype}}^\ast} : {\mathsf{ok}}{(x + 1)} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{rec}~{{\mathit{subtype}}^\ast} : {\mathsf{ok}}{(x + 1)} }{ -C \vdash \mathsf{rec}~({\mathit{subtype}}_1~{{\mathit{subtype}}^\ast}) : {\mathsf{ok}}{(x)} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{rec}~({\mathit{subtype}}_1~{{\mathit{subtype}}^\ast}) : {\mathsf{ok}}{(x)} } \, {[\textsc{\scriptsize K{-}rect{-}cons}]} \qquad \end{array} @@ -3723,9 +3723,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C, \mathsf{rec}~{{\mathit{subtype}}^\ast} \vdash \mathsf{rec}~{{\mathit{subtype}}^\ast} : {\mathsf{ok}}{(x,\, 0)} +{\mathit{{\scriptstyle C}}}, \mathsf{rec}~{{\mathit{subtype}}^\ast} \vdash \mathsf{rec}~{{\mathit{subtype}}^\ast} : {\mathsf{ok}}{(x,\, 0)} }{ -C \vdash \mathsf{rec}~{{\mathit{subtype}}^\ast} : {\mathsf{ok}}{(x)} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{rec}~{{\mathit{subtype}}^\ast} : {\mathsf{ok}}{(x)} } \, {[\textsc{\scriptsize K{-}rect{-}rec2}]} \qquad \end{array} @@ -3735,7 +3735,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \mathsf{rec}~\epsilon : {\mathsf{ok}}{(x,\, i)} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{rec}~\epsilon : {\mathsf{ok}}{(x,\, i)} } \, {[\textsc{\scriptsize K{-}rec2{-}empty}]} \qquad \end{array} @@ -3744,11 +3744,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{subtype}}_1 : {\mathsf{ok}}{(x,\, i)} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{subtype}}_1 : {\mathsf{ok}}{(x,\, i)} \qquad -C \vdash \mathsf{rec}~{{\mathit{subtype}}^\ast} : {\mathsf{ok}}{(x + 1,\, i + 1)} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{rec}~{{\mathit{subtype}}^\ast} : {\mathsf{ok}}{(x + 1,\, i + 1)} }{ -C \vdash \mathsf{rec}~({\mathit{subtype}}_1~{{\mathit{subtype}}^\ast}) : {\mathsf{ok}}{(x,\, i)} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{rec}~({\mathit{subtype}}_1~{{\mathit{subtype}}^\ast}) : {\mathsf{ok}}{(x,\, i)} } \, {[\textsc{\scriptsize K{-}rec2{-}cons}]} \qquad \end{array} @@ -3759,13 +3759,13 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{rectype}} : {\mathsf{ok}}{(x)} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{rectype}} : {\mathsf{ok}}{(x)} \qquad {\mathit{rectype}} = \mathsf{rec}~{{\mathit{subtype}}^{n}} \qquad i < n }{ -C \vdash {\mathit{rectype}} {.} i : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{rectype}} {.} i : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}def}]} \qquad \end{array} @@ -3790,7 +3790,7 @@ $$ \frac{ n \leq m \leq k }{ -C \vdash {}[ n .. m ] : k +{\mathit{{\scriptstyle C}}} \vdash {}[ n .. m ] : k } \, {[\textsc{\scriptsize K{-}limits}]} \qquad \end{array} @@ -3799,11 +3799,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {t_1^\ast} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {t_1^\ast} : \mathsf{ok} \qquad -C \vdash {t_2^\ast} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {t_2^\ast} : \mathsf{ok} }{ -C \vdash {t_1^\ast} \rightarrow {t_2^\ast} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {t_1^\ast} \rightarrow {t_2^\ast} : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}func}]} \qquad \end{array} @@ -3812,9 +3812,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash t : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash t : \mathsf{ok} }{ -C \vdash {\mathsf{mut}^?}~t : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathsf{mut}^?}~t : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}global}]} \qquad \end{array} @@ -3823,11 +3823,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{limits}} : {2^{32}} - 1 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{limits}} : {2^{32}} - 1 \qquad -C \vdash {\mathit{reftype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{reftype}} : \mathsf{ok} }{ -C \vdash {\mathit{limits}}~{\mathit{reftype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{limits}}~{\mathit{reftype}} : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}table}]} \qquad \end{array} @@ -3836,9 +3836,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{limits}} : {2^{16}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{limits}} : {2^{16}} }{ -C \vdash {\mathit{limits}}~\mathsf{i{\scriptstyle8}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{limits}}~\mathsf{i{\scriptstyle 8}} : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}mem}]} \qquad \end{array} @@ -3849,11 +3849,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{deftype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{deftype}} : \mathsf{ok} \qquad {\mathit{deftype}} \approx \mathsf{func}~{\mathit{functype}} }{ -C \vdash \mathsf{func}~{\mathit{deftype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{func}~{\mathit{deftype}} : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}extern{-}func}]} \qquad \end{array} @@ -3862,9 +3862,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{globaltype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{globaltype}} : \mathsf{ok} }{ -C \vdash \mathsf{global}~{\mathit{globaltype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{global}~{\mathit{globaltype}} : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}extern{-}global}]} \qquad \end{array} @@ -3873,9 +3873,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{tabletype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{tabletype}} : \mathsf{ok} }{ -C \vdash \mathsf{table}~{\mathit{tabletype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{table}~{\mathit{tabletype}} : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}extern{-}table}]} \qquad \end{array} @@ -3884,9 +3884,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{memtype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{memtype}} : \mathsf{ok} }{ -C \vdash \mathsf{mem}~{\mathit{memtype}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{mem}~{\mathit{memtype}} : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}extern{-}mem}]} \qquad \end{array} @@ -3910,7 +3910,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash {\mathit{numtype}} \leq {\mathit{numtype}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{numtype}} \leq {\mathit{numtype}} } \, {[\textsc{\scriptsize S{-}num}]} \qquad \end{array} @@ -3920,7 +3920,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash {\mathit{vectype}} \leq {\mathit{vectype}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{vectype}} \leq {\mathit{vectype}} } \, {[\textsc{\scriptsize S{-}vec}]} \qquad \end{array} @@ -3932,7 +3932,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash {\mathit{heaptype}} \leq {\mathit{heaptype}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{heaptype}} \leq {\mathit{heaptype}} } \, {[\textsc{\scriptsize S{-}heap{-}refl}]} \qquad \end{array} @@ -3941,13 +3941,13 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{heaptype}'} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{heaptype}'} : \mathsf{ok} \qquad -C \vdash {\mathit{heaptype}}_1 \leq {\mathit{heaptype}'} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{heaptype}}_1 \leq {\mathit{heaptype}'} \qquad -C \vdash {\mathit{heaptype}'} \leq {\mathit{heaptype}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{heaptype}'} \leq {\mathit{heaptype}}_2 }{ -C \vdash {\mathit{heaptype}}_1 \leq {\mathit{heaptype}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{heaptype}}_1 \leq {\mathit{heaptype}}_2 } \, {[\textsc{\scriptsize S{-}heap{-}trans}]} \qquad \end{array} @@ -3957,7 +3957,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \mathsf{eq} \leq \mathsf{any} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{eq} \leq \mathsf{any} } \, {[\textsc{\scriptsize S{-}heap{-}eq{-}any}]} \qquad \end{array} @@ -3967,7 +3967,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \mathsf{i{\scriptstyle31}} \leq \mathsf{eq} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{i{\scriptstyle 31}} \leq \mathsf{eq} } \, {[\textsc{\scriptsize S{-}heap{-}i31{-}eq}]} \qquad \end{array} @@ -3977,7 +3977,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \mathsf{struct} \leq \mathsf{eq} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{struct} \leq \mathsf{eq} } \, {[\textsc{\scriptsize S{-}heap{-}struct{-}eq}]} \qquad \end{array} @@ -3987,7 +3987,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \mathsf{array} \leq \mathsf{eq} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{array} \leq \mathsf{eq} } \, {[\textsc{\scriptsize S{-}heap{-}array{-}eq}]} \qquad \end{array} @@ -3998,7 +3998,7 @@ $$ \frac{ {\mathit{deftype}} \approx \mathsf{struct}~{{\mathit{yt}}^\ast} }{ -C \vdash {\mathit{deftype}} \leq \mathsf{struct} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{deftype}} \leq \mathsf{struct} } \, {[\textsc{\scriptsize S{-}heap{-}struct}]} \qquad \end{array} @@ -4009,7 +4009,7 @@ $$ \frac{ {\mathit{deftype}} \approx \mathsf{array}~{\mathit{yt}} }{ -C \vdash {\mathit{deftype}} \leq \mathsf{array} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{deftype}} \leq \mathsf{array} } \, {[\textsc{\scriptsize S{-}heap{-}array}]} \qquad \end{array} @@ -4020,7 +4020,7 @@ $$ \frac{ {\mathit{deftype}} \approx \mathsf{func}~{\mathit{ft}} }{ -C \vdash {\mathit{deftype}} \leq \mathsf{func} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{deftype}} \leq \mathsf{func} } \, {[\textsc{\scriptsize S{-}heap{-}func}]} \qquad \end{array} @@ -4029,9 +4029,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{deftype}}_1 \leq {\mathit{deftype}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{deftype}}_1 \leq {\mathit{deftype}}_2 }{ -C \vdash {\mathit{deftype}}_1 \leq {\mathit{deftype}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{deftype}}_1 \leq {\mathit{deftype}}_2 } \, {[\textsc{\scriptsize S{-}heap{-}def}]} \qquad \end{array} @@ -4040,9 +4040,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash C{.}\mathsf{types}{}[{\mathit{typeidx}}] \leq {\mathit{heaptype}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{{\scriptstyle C}}}{.}\mathsf{types}{}[{\mathit{typeidx}}] \leq {\mathit{heaptype}} }{ -C \vdash {\mathit{typeidx}} \leq {\mathit{heaptype}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{typeidx}} \leq {\mathit{heaptype}} } \, {[\textsc{\scriptsize S{-}heap{-}typeidx{-}l}]} \qquad \end{array} @@ -4051,9 +4051,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{heaptype}} \leq C{.}\mathsf{types}{}[{\mathit{typeidx}}] +{\mathit{{\scriptstyle C}}} \vdash {\mathit{heaptype}} \leq {\mathit{{\scriptstyle C}}}{.}\mathsf{types}{}[{\mathit{typeidx}}] }{ -C \vdash {\mathit{heaptype}} \leq {\mathit{typeidx}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{heaptype}} \leq {\mathit{typeidx}} } \, {[\textsc{\scriptsize S{-}heap{-}typeidx{-}r}]} \qquad \end{array} @@ -4062,9 +4062,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{rec}{}[i] = \mathsf{sub}~{\mathsf{final}^?}~({y_1^\ast}~y~{y_2^\ast})~{\mathit{ct}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{rec}{}[i] = \mathsf{sub}~{\mathsf{final}^?}~({y_1^\ast}~y~{y_2^\ast})~{\mathit{ct}} }{ -C \vdash \mathsf{rec}~i \leq y +{\mathit{{\scriptstyle C}}} \vdash \mathsf{rec}~i \leq y } \, {[\textsc{\scriptsize S{-}heap{-}rec}]} \qquad \end{array} @@ -4073,9 +4073,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{heaptype}} \leq \mathsf{any} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{heaptype}} \leq \mathsf{any} }{ -C \vdash \mathsf{none} \leq {\mathit{heaptype}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{none} \leq {\mathit{heaptype}} } \, {[\textsc{\scriptsize S{-}heap{-}none}]} \qquad \end{array} @@ -4084,9 +4084,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{heaptype}} \leq \mathsf{func} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{heaptype}} \leq \mathsf{func} }{ -C \vdash \mathsf{nofunc} \leq {\mathit{heaptype}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{nofunc} \leq {\mathit{heaptype}} } \, {[\textsc{\scriptsize S{-}heap{-}nofunc}]} \qquad \end{array} @@ -4095,9 +4095,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{heaptype}} \leq \mathsf{extern} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{heaptype}} \leq \mathsf{extern} }{ -C \vdash \mathsf{noextern} \leq {\mathit{heaptype}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{noextern} \leq {\mathit{heaptype}} } \, {[\textsc{\scriptsize S{-}heap{-}noextern}]} \qquad \end{array} @@ -4107,7 +4107,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \mathsf{bot} \leq {\mathit{heaptype}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{bot} \leq {\mathit{heaptype}} } \, {[\textsc{\scriptsize S{-}heap{-}bot}]} \qquad \end{array} @@ -4118,9 +4118,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{ht}}_1 \leq {\mathit{ht}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{ht}}_1 \leq {\mathit{ht}}_2 }{ -C \vdash \mathsf{ref}~{\mathit{ht}}_1 \leq \mathsf{ref}~{\mathit{ht}}_2 +{\mathit{{\scriptstyle C}}} \vdash \mathsf{ref}~{\mathit{ht}}_1 \leq \mathsf{ref}~{\mathit{ht}}_2 } \, {[\textsc{\scriptsize S{-}ref{-}nonnull}]} \qquad \end{array} @@ -4129,9 +4129,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{ht}}_1 \leq {\mathit{ht}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{ht}}_1 \leq {\mathit{ht}}_2 }{ -C \vdash \mathsf{ref}~{\mathsf{null}^?}~{\mathit{ht}}_1 \leq \mathsf{ref}~\mathsf{null}~{\mathit{ht}}_2 +{\mathit{{\scriptstyle C}}} \vdash \mathsf{ref}~{\mathsf{null}^?}~{\mathit{ht}}_1 \leq \mathsf{ref}~\mathsf{null}~{\mathit{ht}}_2 } \, {[\textsc{\scriptsize S{-}ref{-}null}]} \qquad \end{array} @@ -4142,9 +4142,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{numtype}}_1 \leq {\mathit{numtype}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{numtype}}_1 \leq {\mathit{numtype}}_2 }{ -C \vdash {\mathit{numtype}}_1 \leq {\mathit{numtype}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{numtype}}_1 \leq {\mathit{numtype}}_2 } \, {[\textsc{\scriptsize S{-}val{-}num}]} \qquad \end{array} @@ -4153,9 +4153,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{vectype}}_1 \leq {\mathit{vectype}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{vectype}}_1 \leq {\mathit{vectype}}_2 }{ -C \vdash {\mathit{vectype}}_1 \leq {\mathit{vectype}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{vectype}}_1 \leq {\mathit{vectype}}_2 } \, {[\textsc{\scriptsize S{-}val{-}vec}]} \qquad \end{array} @@ -4164,9 +4164,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{reftype}}_1 \leq {\mathit{reftype}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{reftype}}_1 \leq {\mathit{reftype}}_2 }{ -C \vdash {\mathit{reftype}}_1 \leq {\mathit{reftype}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{reftype}}_1 \leq {\mathit{reftype}}_2 } \, {[\textsc{\scriptsize S{-}val{-}ref}]} \qquad \end{array} @@ -4176,7 +4176,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \mathsf{bot} \leq {\mathit{valtype}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{bot} \leq {\mathit{valtype}} } \, {[\textsc{\scriptsize S{-}val{-}bot}]} \qquad \end{array} @@ -4191,9 +4191,9 @@ $\boxed{{\mathit{context}} \vdash {\mathit{instrtype}} \leq {\mathit{instrtype}} $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -(C \vdash t_1 \leq t_2)^\ast +({\mathit{{\scriptstyle C}}} \vdash t_1 \leq t_2)^\ast }{ -C \vdash {t_1^\ast} \leq {t_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash {t_1^\ast} \leq {t_2^\ast} } \, {[\textsc{\scriptsize S{-}result}]} \qquad \end{array} @@ -4202,15 +4202,15 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {t_{21}^\ast} \leq {t_{11}^\ast} +{\mathit{{\scriptstyle C}}} \vdash {t_{21}^\ast} \leq {t_{11}^\ast} \qquad -C \vdash {t_{12}^\ast} \leq {t_{22}^\ast} +{\mathit{{\scriptstyle C}}} \vdash {t_{12}^\ast} \leq {t_{22}^\ast} \qquad {x^\ast} = {x_2^\ast} \setminus {x_1^\ast} \qquad -((C{.}\mathsf{locals}{}[x] = \mathsf{set}~t))^\ast +(({\mathit{{\scriptstyle C}}}{.}\mathsf{locals}{}[x] = \mathsf{set}~t))^\ast }{ -C \vdash {t_{11}^\ast}~{\rightarrow}_{{x_1^\ast}}\,{t_{12}^\ast} \leq {t_{21}^\ast}~{\rightarrow}_{{x_2^\ast}}\,{t_{22}^\ast} +{\mathit{{\scriptstyle C}}} \vdash {t_{11}^\ast}~{\rightarrow}_{{x_1^\ast}}\,{t_{12}^\ast} \leq {t_{21}^\ast}~{\rightarrow}_{{x_2^\ast}}\,{t_{22}^\ast} } \, {[\textsc{\scriptsize S{-}instr}]} \qquad \end{array} @@ -4230,7 +4230,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash {\mathit{packtype}} \leq {\mathit{packtype}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{packtype}} \leq {\mathit{packtype}} } \, {[\textsc{\scriptsize S{-}pack}]} \qquad \end{array} @@ -4241,9 +4241,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{valtype}}_1 \leq {\mathit{valtype}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{valtype}}_1 \leq {\mathit{valtype}}_2 }{ -C \vdash {\mathit{valtype}}_1 \leq {\mathit{valtype}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{valtype}}_1 \leq {\mathit{valtype}}_2 } \, {[\textsc{\scriptsize S{-}storage{-}val}]} \qquad \end{array} @@ -4252,9 +4252,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{packtype}}_1 \leq {\mathit{packtype}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{packtype}}_1 \leq {\mathit{packtype}}_2 }{ -C \vdash {\mathit{packtype}}_1 \leq {\mathit{packtype}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{packtype}}_1 \leq {\mathit{packtype}}_2 } \, {[\textsc{\scriptsize S{-}storage{-}pack}]} \qquad \end{array} @@ -4265,9 +4265,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{zt}}_1 \leq {\mathit{zt}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{zt}}_1 \leq {\mathit{zt}}_2 }{ -C \vdash {\mathit{zt}}_1 \leq {\mathit{zt}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{zt}}_1 \leq {\mathit{zt}}_2 } \, {[\textsc{\scriptsize S{-}field{-}const}]} \qquad \end{array} @@ -4276,11 +4276,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{zt}}_1 \leq {\mathit{zt}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{zt}}_1 \leq {\mathit{zt}}_2 \qquad -C \vdash {\mathit{zt}}_2 \leq {\mathit{zt}}_1 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{zt}}_2 \leq {\mathit{zt}}_1 }{ -C \vdash \mathsf{mut}~{\mathit{zt}}_1 \leq \mathsf{mut}~{\mathit{zt}}_2 +{\mathit{{\scriptstyle C}}} \vdash \mathsf{mut}~{\mathit{zt}}_1 \leq \mathsf{mut}~{\mathit{zt}}_2 } \, {[\textsc{\scriptsize S{-}field{-}var}]} \qquad \end{array} @@ -4291,9 +4291,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -(C \vdash {\mathit{yt}}_1 \leq {\mathit{yt}}_2)^\ast +({\mathit{{\scriptstyle C}}} \vdash {\mathit{yt}}_1 \leq {\mathit{yt}}_2)^\ast }{ -C \vdash \mathsf{struct}~({{\mathit{yt}}_1^\ast}~{\mathit{yt}'}_1) \leq \mathsf{struct}~{{\mathit{yt}}_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{struct}~({{\mathit{yt}}_1^\ast}~{\mathit{yt}'}_1) \leq \mathsf{struct}~{{\mathit{yt}}_2^\ast} } \, {[\textsc{\scriptsize S{-}comp{-}struct}]} \qquad \end{array} @@ -4302,9 +4302,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{yt}}_1 \leq {\mathit{yt}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{yt}}_1 \leq {\mathit{yt}}_2 }{ -C \vdash \mathsf{array}~{\mathit{yt}}_1 \leq \mathsf{array}~{\mathit{yt}}_2 +{\mathit{{\scriptstyle C}}} \vdash \mathsf{array}~{\mathit{yt}}_1 \leq \mathsf{array}~{\mathit{yt}}_2 } \, {[\textsc{\scriptsize S{-}comp{-}array}]} \qquad \end{array} @@ -4313,9 +4313,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{ft}}_1 \leq {\mathit{ft}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{ft}}_1 \leq {\mathit{ft}}_2 }{ -C \vdash \mathsf{func}~{\mathit{ft}}_1 \leq \mathsf{func}~{\mathit{ft}}_2 +{\mathit{{\scriptstyle C}}} \vdash \mathsf{func}~{\mathit{ft}}_1 \leq \mathsf{func}~{\mathit{ft}}_2 } \, {[\textsc{\scriptsize S{-}comp{-}func}]} \qquad \end{array} @@ -4326,9 +4326,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -{\mathrm{clos}}~C~({\mathit{deftype}}_1) = {\mathrm{clos}}~C~({\mathit{deftype}}_2) +{\mathrm{clos}}~{\mathit{{\scriptstyle C}}}~({\mathit{deftype}}_1) = {\mathrm{clos}}~{\mathit{{\scriptstyle C}}}~({\mathit{deftype}}_2) }{ -C \vdash {\mathit{deftype}}_1 \leq {\mathit{deftype}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{deftype}}_1 \leq {\mathit{deftype}}_2 } \, {[\textsc{\scriptsize S{-}def{-}refl}]} \qquad \end{array} @@ -4339,9 +4339,9 @@ $$ \frac{ {\mathrm{unroll}}({\mathit{deftype}}_1) = \mathsf{sub}~{\mathsf{final}^?}~({y_1^\ast}~y~{y_2^\ast})~{\mathit{ct}} \qquad -C \vdash y \leq {\mathit{deftype}}_2 +{\mathit{{\scriptstyle C}}} \vdash y \leq {\mathit{deftype}}_2 }{ -C \vdash {\mathit{deftype}}_1 \leq {\mathit{deftype}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{deftype}}_1 \leq {\mathit{deftype}}_2 } \, {[\textsc{\scriptsize S{-}def{-}super}]} \qquad \end{array} @@ -4368,7 +4368,7 @@ n_{11} \geq n_{21} \qquad n_{12} \leq n_{22} }{ -C \vdash {}[ n_{11} .. n_{12} ] \leq {}[ n_{21} .. n_{22} ] +{\mathit{{\scriptstyle C}}} \vdash {}[ n_{11} .. n_{12} ] \leq {}[ n_{21} .. n_{22} ] } \, {[\textsc{\scriptsize S{-}limits}]} \qquad \end{array} @@ -4378,7 +4378,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash {\mathit{ft}} \leq {\mathit{ft}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{ft}} \leq {\mathit{ft}} } \, {[\textsc{\scriptsize S{-}func}]} \qquad \end{array} @@ -4387,9 +4387,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash t_1 \leq t_2 +{\mathit{{\scriptstyle C}}} \vdash t_1 \leq t_2 }{ -C \vdash t_1 \leq t_2 +{\mathit{{\scriptstyle C}}} \vdash t_1 \leq t_2 } \, {[\textsc{\scriptsize S{-}global{-}const}]} \qquad \end{array} @@ -4398,11 +4398,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash t_1 \leq t_2 +{\mathit{{\scriptstyle C}}} \vdash t_1 \leq t_2 \qquad -C \vdash t_2 \leq t_1 +{\mathit{{\scriptstyle C}}} \vdash t_2 \leq t_1 }{ -C \vdash \mathsf{mut}~t_1 \leq \mathsf{mut}~t_2 +{\mathit{{\scriptstyle C}}} \vdash \mathsf{mut}~t_1 \leq \mathsf{mut}~t_2 } \, {[\textsc{\scriptsize S{-}global{-}var}]} \qquad \end{array} @@ -4411,13 +4411,13 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{lim}}_1 \leq {\mathit{lim}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{lim}}_1 \leq {\mathit{lim}}_2 \qquad -C \vdash {\mathit{rt}}_1 \leq {\mathit{rt}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{rt}}_1 \leq {\mathit{rt}}_2 \qquad -C \vdash {\mathit{rt}}_2 \leq {\mathit{rt}}_1 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{rt}}_2 \leq {\mathit{rt}}_1 }{ -C \vdash {\mathit{lim}}_1~{\mathit{rt}}_1 \leq {\mathit{lim}}_2~{\mathit{rt}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{lim}}_1~{\mathit{rt}}_1 \leq {\mathit{lim}}_2~{\mathit{rt}}_2 } \, {[\textsc{\scriptsize S{-}table}]} \qquad \end{array} @@ -4426,9 +4426,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{lim}}_1 \leq {\mathit{lim}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{lim}}_1 \leq {\mathit{lim}}_2 }{ -C \vdash {\mathit{lim}}_1~\mathsf{i{\scriptstyle8}} \leq {\mathit{lim}}_2~\mathsf{i{\scriptstyle8}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{lim}}_1~\mathsf{i{\scriptstyle 8}} \leq {\mathit{lim}}_2~\mathsf{i{\scriptstyle 8}} } \, {[\textsc{\scriptsize S{-}mem}]} \qquad \end{array} @@ -4439,9 +4439,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{dt}}_1 \leq {\mathit{dt}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{dt}}_1 \leq {\mathit{dt}}_2 }{ -C \vdash \mathsf{func}~{\mathit{dt}}_1 \leq \mathsf{func}~{\mathit{dt}}_2 +{\mathit{{\scriptstyle C}}} \vdash \mathsf{func}~{\mathit{dt}}_1 \leq \mathsf{func}~{\mathit{dt}}_2 } \, {[\textsc{\scriptsize S{-}extern{-}func}]} \qquad \end{array} @@ -4450,9 +4450,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{gt}}_1 \leq {\mathit{gt}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{gt}}_1 \leq {\mathit{gt}}_2 }{ -C \vdash \mathsf{global}~{\mathit{gt}}_1 \leq \mathsf{global}~{\mathit{gt}}_2 +{\mathit{{\scriptstyle C}}} \vdash \mathsf{global}~{\mathit{gt}}_1 \leq \mathsf{global}~{\mathit{gt}}_2 } \, {[\textsc{\scriptsize S{-}extern{-}global}]} \qquad \end{array} @@ -4461,9 +4461,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{tt}}_1 \leq {\mathit{tt}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{tt}}_1 \leq {\mathit{tt}}_2 }{ -C \vdash \mathsf{table}~{\mathit{tt}}_1 \leq \mathsf{table}~{\mathit{tt}}_2 +{\mathit{{\scriptstyle C}}} \vdash \mathsf{table}~{\mathit{tt}}_1 \leq \mathsf{table}~{\mathit{tt}}_2 } \, {[\textsc{\scriptsize S{-}extern{-}table}]} \qquad \end{array} @@ -4472,9 +4472,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{mt}}_1 \leq {\mathit{mt}}_2 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{mt}}_1 \leq {\mathit{mt}}_2 }{ -C \vdash \mathsf{mem}~{\mathit{mt}}_1 \leq \mathsf{mem}~{\mathit{mt}}_2 +{\mathit{{\scriptstyle C}}} \vdash \mathsf{mem}~{\mathit{mt}}_1 \leq \mathsf{mem}~{\mathit{mt}}_2 } \, {[\textsc{\scriptsize S{-}extern{-}mem}]} \qquad \end{array} @@ -4493,9 +4493,9 @@ $\boxed{{\mathit{context}} \vdash {\mathit{expr}} : {\mathit{resulttype}}}$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {{\mathit{instr}}^\ast} : \epsilon~{\rightarrow}_{\epsilon}\,{t^\ast} +{\mathit{{\scriptstyle C}}} \vdash {{\mathit{instr}}^\ast} : \epsilon~{\rightarrow}_{\epsilon}\,{t^\ast} }{ -C \vdash {{\mathit{instr}}^\ast} : {t^\ast} +{\mathit{{\scriptstyle C}}} \vdash {{\mathit{instr}}^\ast} : {t^\ast} } \, {[\textsc{\scriptsize T{-}expr}]} \qquad \end{array} @@ -4507,7 +4507,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \epsilon : \epsilon \rightarrow \epsilon +{\mathit{{\scriptstyle C}}} \vdash \epsilon : \epsilon \rightarrow \epsilon } \, {[\textsc{\scriptsize T{-}instr*{-}empty}]} \qquad \end{array} @@ -4516,13 +4516,13 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{instr}}_1 : {t_1^\ast}~{\rightarrow}_{{x_1^\ast}}\,{t_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{instr}}_1 : {t_1^\ast}~{\rightarrow}_{{x_1^\ast}}\,{t_2^\ast} \qquad -(C{.}\mathsf{locals}{}[x_1] = {\mathit{init}}~t)^\ast +({\mathit{{\scriptstyle C}}}{.}\mathsf{locals}{}[x_1] = {\mathit{init}}~t)^\ast \qquad -C{}[\mathsf{local}{}[{x_1^\ast}] = {(\mathsf{set}~t)^\ast}] \vdash {{\mathit{instr}}_2^\ast} : {t_2^\ast}~{\rightarrow}_{{x_2^\ast}}\,{t_3^\ast} +{\mathit{{\scriptstyle C}}}{}[\mathsf{local}{}[{x_1^\ast}] = {(\mathsf{set}~t)^\ast}] \vdash {{\mathit{instr}}_2^\ast} : {t_2^\ast}~{\rightarrow}_{{x_2^\ast}}\,{t_3^\ast} }{ -C \vdash {\mathit{instr}}_1~{{\mathit{instr}}_2^\ast} : {t_1^\ast}~{\rightarrow}_{{x_1^\ast}~{x_2^\ast}}\,{t_3^\ast} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{instr}}_1~{{\mathit{instr}}_2^\ast} : {t_1^\ast}~{\rightarrow}_{{x_1^\ast}~{x_2^\ast}}\,{t_3^\ast} } \, {[\textsc{\scriptsize T{-}instr*{-}seq}]} \qquad \end{array} @@ -4531,13 +4531,13 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {{\mathit{instr}}^\ast} : {\mathit{it}} +{\mathit{{\scriptstyle C}}} \vdash {{\mathit{instr}}^\ast} : {\mathit{it}} \qquad -C \vdash {\mathit{it}} \leq {\mathit{it}'} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{it}} \leq {\mathit{it}'} \qquad -C \vdash {\mathit{it}'} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{it}'} : \mathsf{ok} }{ -C \vdash {{\mathit{instr}}^\ast} : {\mathit{it}'} +{\mathit{{\scriptstyle C}}} \vdash {{\mathit{instr}}^\ast} : {\mathit{it}'} } \, {[\textsc{\scriptsize T{-}instr*{-}sub}]} \qquad \end{array} @@ -4546,11 +4546,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {{\mathit{instr}}^\ast} : {t_1^\ast}~{\rightarrow}_{{x^\ast}}\,{t_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash {{\mathit{instr}}^\ast} : {t_1^\ast}~{\rightarrow}_{{x^\ast}}\,{t_2^\ast} \qquad -C \vdash {t^\ast} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {t^\ast} : \mathsf{ok} }{ -C \vdash {{\mathit{instr}}^\ast} : ({t^\ast}~{t_1^\ast})~{\rightarrow}_{{x^\ast}}\,({t^\ast}~{t_2^\ast}) +{\mathit{{\scriptstyle C}}} \vdash {{\mathit{instr}}^\ast} : ({t^\ast}~{t_1^\ast})~{\rightarrow}_{{x^\ast}}\,({t^\ast}~{t_2^\ast}) } \, {[\textsc{\scriptsize T{-}instr*{-}frame}]} \qquad \end{array} @@ -4562,7 +4562,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \mathsf{nop} : \epsilon \rightarrow \epsilon +{\mathit{{\scriptstyle C}}} \vdash \mathsf{nop} : \epsilon \rightarrow \epsilon } \, {[\textsc{\scriptsize T{-}nop}]} \qquad \end{array} @@ -4571,9 +4571,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {t_1^\ast} \rightarrow {t_2^\ast} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {t_1^\ast} \rightarrow {t_2^\ast} : \mathsf{ok} }{ -C \vdash \mathsf{unreachable} : {t_1^\ast} \rightarrow {t_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{unreachable} : {t_1^\ast} \rightarrow {t_2^\ast} } \, {[\textsc{\scriptsize T{-}unreachable}]} \qquad \end{array} @@ -4582,9 +4582,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash t : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash t : \mathsf{ok} }{ -C \vdash \mathsf{drop} : t \rightarrow \epsilon +{\mathit{{\scriptstyle C}}} \vdash \mathsf{drop} : t \rightarrow \epsilon } \, {[\textsc{\scriptsize T{-}drop}]} \qquad \end{array} @@ -4595,9 +4595,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash t : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash t : \mathsf{ok} }{ -C \vdash \mathsf{select}~t : t~t~\mathsf{i{\scriptstyle32}} \rightarrow t +{\mathit{{\scriptstyle C}}} \vdash \mathsf{select}~t : t~t~\mathsf{i{\scriptstyle 32}} \rightarrow t } \, {[\textsc{\scriptsize T{-}select{-}expl}]} \qquad \end{array} @@ -4606,13 +4606,13 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash t : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash t : \mathsf{ok} \qquad -C \vdash t \leq {t'} +{\mathit{{\scriptstyle C}}} \vdash t \leq {t'} \qquad {t'} = {\mathit{numtype}} \lor {t'} = {\mathit{vectype}} }{ -C \vdash \mathsf{select} : t~t~\mathsf{i{\scriptstyle32}} \rightarrow t +{\mathit{{\scriptstyle C}}} \vdash \mathsf{select} : t~t~\mathsf{i{\scriptstyle 32}} \rightarrow t } \, {[\textsc{\scriptsize T{-}select{-}impl}]} \qquad \end{array} @@ -4625,9 +4625,9 @@ $\boxed{{\mathit{context}} \vdash {\mathit{blocktype}} : {\mathit{instrtype}}}$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -(C \vdash {\mathit{valtype}} : \mathsf{ok})^? +({\mathit{{\scriptstyle C}}} \vdash {\mathit{valtype}} : \mathsf{ok})^? }{ -C \vdash {{\mathit{valtype}}^?} : \epsilon \rightarrow {{\mathit{valtype}}^?} +{\mathit{{\scriptstyle C}}} \vdash {{\mathit{valtype}}^?} : \epsilon \rightarrow {{\mathit{valtype}}^?} } \, {[\textsc{\scriptsize K{-}block{-}valtype}]} \qquad \end{array} @@ -4636,9 +4636,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{types}{}[{\mathit{typeidx}}] \approx \mathsf{func}~({t_1^\ast} \rightarrow {t_2^\ast}) +{\mathit{{\scriptstyle C}}}{.}\mathsf{types}{}[{\mathit{typeidx}}] \approx \mathsf{func}~({t_1^\ast} \rightarrow {t_2^\ast}) }{ -C \vdash {\mathit{typeidx}} : {t_1^\ast} \rightarrow {t_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{typeidx}} : {t_1^\ast} \rightarrow {t_2^\ast} } \, {[\textsc{\scriptsize K{-}block{-}typeidx}]} \qquad \end{array} @@ -4649,11 +4649,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{bt}} : {t_1^\ast} \rightarrow {t_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{bt}} : {t_1^\ast} \rightarrow {t_2^\ast} \qquad -C, \mathsf{labels}~({t_2^\ast}) \vdash {{\mathit{instr}}^\ast} : {t_1^\ast}~{\rightarrow}_{{x^\ast}}\,{t_2^\ast} +{\mathit{{\scriptstyle C}}}, \mathsf{labels}~({t_2^\ast}) \vdash {{\mathit{instr}}^\ast} : {t_1^\ast}~{\rightarrow}_{{x^\ast}}\,{t_2^\ast} }{ -C \vdash \mathsf{block}~{\mathit{bt}}~{{\mathit{instr}}^\ast} : {t_1^\ast} \rightarrow {t_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{block}~{\mathit{bt}}~{{\mathit{instr}}^\ast} : {t_1^\ast} \rightarrow {t_2^\ast} } \, {[\textsc{\scriptsize T{-}block}]} \qquad \end{array} @@ -4662,11 +4662,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{bt}} : {t_1^\ast} \rightarrow {t_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{bt}} : {t_1^\ast} \rightarrow {t_2^\ast} \qquad -C, \mathsf{labels}~({t_1^\ast}) \vdash {{\mathit{instr}}^\ast} : {t_1^\ast}~{\rightarrow}_{{x^\ast}}\,{t_2^\ast} +{\mathit{{\scriptstyle C}}}, \mathsf{labels}~({t_1^\ast}) \vdash {{\mathit{instr}}^\ast} : {t_1^\ast}~{\rightarrow}_{{x^\ast}}\,{t_2^\ast} }{ -C \vdash \mathsf{loop}~{\mathit{bt}}~{{\mathit{instr}}^\ast} : {t_1^\ast} \rightarrow {t_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{loop}~{\mathit{bt}}~{{\mathit{instr}}^\ast} : {t_1^\ast} \rightarrow {t_2^\ast} } \, {[\textsc{\scriptsize T{-}loop}]} \qquad \end{array} @@ -4675,13 +4675,13 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{bt}} : {t_1^\ast} \rightarrow {t_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{bt}} : {t_1^\ast} \rightarrow {t_2^\ast} \qquad -C, \mathsf{labels}~({t_2^\ast}) \vdash {{\mathit{instr}}_1^\ast} : {t_1^\ast}~{\rightarrow}_{{x_1^\ast}}\,{t_2^\ast} +{\mathit{{\scriptstyle C}}}, \mathsf{labels}~({t_2^\ast}) \vdash {{\mathit{instr}}_1^\ast} : {t_1^\ast}~{\rightarrow}_{{x_1^\ast}}\,{t_2^\ast} \qquad -C, \mathsf{labels}~({t_2^\ast}) \vdash {{\mathit{instr}}_2^\ast} : {t_1^\ast}~{\rightarrow}_{{x_2^\ast}}\,{t_2^\ast} +{\mathit{{\scriptstyle C}}}, \mathsf{labels}~({t_2^\ast}) \vdash {{\mathit{instr}}_2^\ast} : {t_1^\ast}~{\rightarrow}_{{x_2^\ast}}\,{t_2^\ast} }{ -C \vdash \mathsf{if}~{\mathit{bt}}~{{\mathit{instr}}_1^\ast}~\mathsf{else}~{{\mathit{instr}}_2^\ast} : {t_1^\ast}~\mathsf{i{\scriptstyle32}} \rightarrow {t_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{if}~{\mathit{bt}}~{{\mathit{instr}}_1^\ast}~\mathsf{else}~{{\mathit{instr}}_2^\ast} : {t_1^\ast}~\mathsf{i{\scriptstyle 32}} \rightarrow {t_2^\ast} } \, {[\textsc{\scriptsize T{-}if}]} \qquad \end{array} @@ -4692,11 +4692,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{labels}{}[l] = {t^\ast} +{\mathit{{\scriptstyle C}}}{.}\mathsf{labels}{}[l] = {t^\ast} \qquad -C \vdash {t_1^\ast} \rightarrow {t_2^\ast} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {t_1^\ast} \rightarrow {t_2^\ast} : \mathsf{ok} }{ -C \vdash \mathsf{br}~l : {t_1^\ast}~{t^\ast} \rightarrow {t_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{br}~l : {t_1^\ast}~{t^\ast} \rightarrow {t_2^\ast} } \, {[\textsc{\scriptsize T{-}br}]} \qquad \end{array} @@ -4705,9 +4705,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{labels}{}[l] = {t^\ast} +{\mathit{{\scriptstyle C}}}{.}\mathsf{labels}{}[l] = {t^\ast} }{ -C \vdash \mathsf{br\_if}~l : {t^\ast}~\mathsf{i{\scriptstyle32}} \rightarrow {t^\ast} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{br\_if}~l : {t^\ast}~\mathsf{i{\scriptstyle 32}} \rightarrow {t^\ast} } \, {[\textsc{\scriptsize T{-}br\_if}]} \qquad \end{array} @@ -4716,13 +4716,13 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -(C \vdash {t^\ast} \leq C{.}\mathsf{labels}{}[l])^\ast +({\mathit{{\scriptstyle C}}} \vdash {t^\ast} \leq {\mathit{{\scriptstyle C}}}{.}\mathsf{labels}{}[l])^\ast \qquad -C \vdash {t^\ast} \leq C{.}\mathsf{labels}{}[{l'}] +{\mathit{{\scriptstyle C}}} \vdash {t^\ast} \leq {\mathit{{\scriptstyle C}}}{.}\mathsf{labels}{}[{l'}] \qquad -C \vdash {t_1^\ast} \rightarrow {t_2^\ast} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {t_1^\ast} \rightarrow {t_2^\ast} : \mathsf{ok} }{ -C \vdash \mathsf{br\_table}~{l^\ast}~{l'} : {t_1^\ast}~{t^\ast} \rightarrow {t_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{br\_table}~{l^\ast}~{l'} : {t_1^\ast}~{t^\ast} \rightarrow {t_2^\ast} } \, {[\textsc{\scriptsize T{-}br\_table}]} \qquad \end{array} @@ -4731,11 +4731,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{labels}{}[l] = {t^\ast} +{\mathit{{\scriptstyle C}}}{.}\mathsf{labels}{}[l] = {t^\ast} \qquad -C \vdash {\mathit{ht}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{ht}} : \mathsf{ok} }{ -C \vdash \mathsf{br\_on\_null}~l : {t^\ast}~(\mathsf{ref}~\mathsf{null}~{\mathit{ht}}) \rightarrow {t^\ast}~(\mathsf{ref}~{\mathit{ht}}) +{\mathit{{\scriptstyle C}}} \vdash \mathsf{br\_on\_null}~l : {t^\ast}~(\mathsf{ref}~\mathsf{null}~{\mathit{ht}}) \rightarrow {t^\ast}~(\mathsf{ref}~{\mathit{ht}}) } \, {[\textsc{\scriptsize T{-}br\_on\_null}]} \qquad \end{array} @@ -4744,9 +4744,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{labels}{}[l] = {t^\ast}~(\mathsf{ref}~{\mathit{ht}}) +{\mathit{{\scriptstyle C}}}{.}\mathsf{labels}{}[l] = {t^\ast}~(\mathsf{ref}~{\mathit{ht}}) }{ -C \vdash \mathsf{br\_on\_non\_null}~l : {t^\ast}~(\mathsf{ref}~\mathsf{null}~{\mathit{ht}}) \rightarrow {t^\ast} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{br\_on\_non\_null}~l : {t^\ast}~(\mathsf{ref}~\mathsf{null}~{\mathit{ht}}) \rightarrow {t^\ast} } \, {[\textsc{\scriptsize T{-}br\_on\_non\_null}]} \qquad \end{array} @@ -4755,17 +4755,17 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{labels}{}[l] = {t^\ast}~{\mathit{rt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{labels}{}[l] = {t^\ast}~{\mathit{rt}} \qquad -C \vdash {\mathit{rt}}_1 : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{rt}}_1 : \mathsf{ok} \qquad -C \vdash {\mathit{rt}}_2 : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{rt}}_2 : \mathsf{ok} \qquad -C \vdash {\mathit{rt}}_2 \leq {\mathit{rt}}_1 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{rt}}_2 \leq {\mathit{rt}}_1 \qquad -C \vdash {\mathit{rt}}_2 \leq {\mathit{rt}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{rt}}_2 \leq {\mathit{rt}} }{ -C \vdash \mathsf{br\_on\_cast}~l~{\mathit{rt}}_1~{\mathit{rt}}_2 : {t^\ast}~{\mathit{rt}}_1 \rightarrow {t^\ast}~({\mathit{rt}}_1 \setminus {\mathit{rt}}_2) +{\mathit{{\scriptstyle C}}} \vdash \mathsf{br\_on\_cast}~l~{\mathit{rt}}_1~{\mathit{rt}}_2 : {t^\ast}~{\mathit{rt}}_1 \rightarrow {t^\ast}~({\mathit{rt}}_1 \setminus {\mathit{rt}}_2) } \, {[\textsc{\scriptsize T{-}br\_on\_cast}]} \qquad \end{array} @@ -4774,17 +4774,17 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{labels}{}[l] = {t^\ast}~{\mathit{rt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{labels}{}[l] = {t^\ast}~{\mathit{rt}} \qquad -C \vdash {\mathit{rt}}_1 : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{rt}}_1 : \mathsf{ok} \qquad -C \vdash {\mathit{rt}}_2 : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{rt}}_2 : \mathsf{ok} \qquad -C \vdash {\mathit{rt}}_2 \leq {\mathit{rt}}_1 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{rt}}_2 \leq {\mathit{rt}}_1 \qquad -C \vdash {\mathit{rt}}_1 \setminus {\mathit{rt}}_2 \leq {\mathit{rt}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{rt}}_1 \setminus {\mathit{rt}}_2 \leq {\mathit{rt}} }{ -C \vdash \mathsf{br\_on\_cast\_fail}~l~{\mathit{rt}}_1~{\mathit{rt}}_2 : {t^\ast}~{\mathit{rt}}_1 \rightarrow {t^\ast}~{\mathit{rt}}_2 +{\mathit{{\scriptstyle C}}} \vdash \mathsf{br\_on\_cast\_fail}~l~{\mathit{rt}}_1~{\mathit{rt}}_2 : {t^\ast}~{\mathit{rt}}_1 \rightarrow {t^\ast}~{\mathit{rt}}_2 } \, {[\textsc{\scriptsize T{-}br\_on\_cast\_fail}]} \qquad \end{array} @@ -4795,9 +4795,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{funcs}{}[x] \approx \mathsf{func}~({t_1^\ast} \rightarrow {t_2^\ast}) +{\mathit{{\scriptstyle C}}}{.}\mathsf{funcs}{}[x] \approx \mathsf{func}~({t_1^\ast} \rightarrow {t_2^\ast}) }{ -C \vdash \mathsf{call}~x : {t_1^\ast} \rightarrow {t_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{call}~x : {t_1^\ast} \rightarrow {t_2^\ast} } \, {[\textsc{\scriptsize T{-}call}]} \qquad \end{array} @@ -4806,9 +4806,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{types}{}[x] \approx \mathsf{func}~({t_1^\ast} \rightarrow {t_2^\ast}) +{\mathit{{\scriptstyle C}}}{.}\mathsf{types}{}[x] \approx \mathsf{func}~({t_1^\ast} \rightarrow {t_2^\ast}) }{ -C \vdash \mathsf{call\_ref}~x : {t_1^\ast}~(\mathsf{ref}~\mathsf{null}~x) \rightarrow {t_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{call\_ref}~x : {t_1^\ast}~(\mathsf{ref}~\mathsf{null}~x) \rightarrow {t_2^\ast} } \, {[\textsc{\scriptsize T{-}call\_ref}]} \qquad \end{array} @@ -4817,13 +4817,13 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{tables}{}[x] = {\mathit{lim}}~{\mathit{rt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{tables}{}[x] = {\mathit{lim}}~{\mathit{rt}} \qquad -C \vdash {\mathit{rt}} \leq (\mathsf{ref}~\mathsf{null}~\mathsf{func}) +{\mathit{{\scriptstyle C}}} \vdash {\mathit{rt}} \leq (\mathsf{ref}~\mathsf{null}~\mathsf{func}) \qquad -C{.}\mathsf{types}{}[y] \approx \mathsf{func}~({t_1^\ast} \rightarrow {t_2^\ast}) +{\mathit{{\scriptstyle C}}}{.}\mathsf{types}{}[y] \approx \mathsf{func}~({t_1^\ast} \rightarrow {t_2^\ast}) }{ -C \vdash \mathsf{call\_indirect}~x~y : {t_1^\ast}~\mathsf{i{\scriptstyle32}} \rightarrow {t_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{call\_indirect}~x~y : {t_1^\ast}~\mathsf{i{\scriptstyle 32}} \rightarrow {t_2^\ast} } \, {[\textsc{\scriptsize T{-}call\_indirect}]} \qquad \end{array} @@ -4832,11 +4832,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{return} = ({t^\ast}) +{\mathit{{\scriptstyle C}}}{.}\mathsf{return} = ({t^\ast}) \qquad -C \vdash {t_1^\ast} \rightarrow {t_2^\ast} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {t_1^\ast} \rightarrow {t_2^\ast} : \mathsf{ok} }{ -C \vdash \mathsf{return} : {t_1^\ast}~{t^\ast} \rightarrow {t_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{return} : {t_1^\ast}~{t^\ast} \rightarrow {t_2^\ast} } \, {[\textsc{\scriptsize T{-}return}]} \qquad \end{array} @@ -4845,15 +4845,15 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{funcs}{}[x] \approx \mathsf{func}~({t_1^\ast} \rightarrow {t_2^\ast}) +{\mathit{{\scriptstyle C}}}{.}\mathsf{funcs}{}[x] \approx \mathsf{func}~({t_1^\ast} \rightarrow {t_2^\ast}) \qquad -C{.}\mathsf{return} = ({{t'}_2^\ast}) +{\mathit{{\scriptstyle C}}}{.}\mathsf{return} = ({{t'}_2^\ast}) \qquad -C \vdash {t_2^\ast} \leq {{t'}_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash {t_2^\ast} \leq {{t'}_2^\ast} \qquad -C \vdash {t_3^\ast} \rightarrow {t_4^\ast} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {t_3^\ast} \rightarrow {t_4^\ast} : \mathsf{ok} }{ -C \vdash \mathsf{return\_call}~x : {t_3^\ast}~{t_1^\ast} \rightarrow {t_4^\ast} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{return\_call}~x : {t_3^\ast}~{t_1^\ast} \rightarrow {t_4^\ast} } \, {[\textsc{\scriptsize T{-}return\_call}]} \qquad \end{array} @@ -4862,15 +4862,15 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{types}{}[x] \approx \mathsf{func}~({t_1^\ast} \rightarrow {t_2^\ast}) +{\mathit{{\scriptstyle C}}}{.}\mathsf{types}{}[x] \approx \mathsf{func}~({t_1^\ast} \rightarrow {t_2^\ast}) \qquad -C{.}\mathsf{return} = ({{t'}_2^\ast}) +{\mathit{{\scriptstyle C}}}{.}\mathsf{return} = ({{t'}_2^\ast}) \qquad -C \vdash {t_2^\ast} \leq {{t'}_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash {t_2^\ast} \leq {{t'}_2^\ast} \qquad -C \vdash {t_3^\ast} \rightarrow {t_4^\ast} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {t_3^\ast} \rightarrow {t_4^\ast} : \mathsf{ok} }{ -C \vdash \mathsf{return\_call\_ref}~x : {t_3^\ast}~{t_1^\ast}~(\mathsf{ref}~\mathsf{null}~x) \rightarrow {t_4^\ast} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{return\_call\_ref}~x : {t_3^\ast}~{t_1^\ast}~(\mathsf{ref}~\mathsf{null}~x) \rightarrow {t_4^\ast} } \, {[\textsc{\scriptsize T{-}return\_call\_ref}]} \qquad \end{array} @@ -4880,20 +4880,20 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ \begin{array}{@{}c@{}} -C{.}\mathsf{tables}{}[x] = {\mathit{lim}}~{\mathit{rt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{tables}{}[x] = {\mathit{lim}}~{\mathit{rt}} \qquad -C \vdash {\mathit{rt}} \leq (\mathsf{ref}~\mathsf{null}~\mathsf{func}) +{\mathit{{\scriptstyle C}}} \vdash {\mathit{rt}} \leq (\mathsf{ref}~\mathsf{null}~\mathsf{func}) \\ -C{.}\mathsf{types}{}[y] \approx \mathsf{func}~({t_1^\ast} \rightarrow {t_2^\ast}) +{\mathit{{\scriptstyle C}}}{.}\mathsf{types}{}[y] \approx \mathsf{func}~({t_1^\ast} \rightarrow {t_2^\ast}) \qquad -C{.}\mathsf{return} = ({{t'}_2^\ast}) +{\mathit{{\scriptstyle C}}}{.}\mathsf{return} = ({{t'}_2^\ast}) \qquad -C \vdash {t_2^\ast} \leq {{t'}_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash {t_2^\ast} \leq {{t'}_2^\ast} \qquad -C \vdash {t_3^\ast} \rightarrow {t_4^\ast} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {t_3^\ast} \rightarrow {t_4^\ast} : \mathsf{ok} \end{array} }{ -C \vdash \mathsf{return\_call\_indirect}~x~y : {t_3^\ast}~{t_1^\ast}~\mathsf{i{\scriptstyle32}} \rightarrow {t_4^\ast} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{return\_call\_indirect}~x~y : {t_3^\ast}~{t_1^\ast}~\mathsf{i{\scriptstyle 32}} \rightarrow {t_4^\ast} } \, {[\textsc{\scriptsize T{-}return\_call\_indirect}]} \qquad \end{array} @@ -4905,7 +4905,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash {\mathit{nt}}{.}\mathsf{const}~c_{\mathit{nt}} : \epsilon \rightarrow {\mathit{nt}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{nt}}{.}\mathsf{const}~c_{\mathit{nt}} : \epsilon \rightarrow {\mathit{nt}} } \, {[\textsc{\scriptsize T{-}const}]} \qquad \end{array} @@ -4915,7 +4915,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash {\mathit{nt}} {.} {\mathit{unop}}_{\mathit{nt}} : {\mathit{nt}} \rightarrow {\mathit{nt}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{nt}} {.} {\mathit{unop}}_{\mathit{nt}} : {\mathit{nt}} \rightarrow {\mathit{nt}} } \, {[\textsc{\scriptsize T{-}unop}]} \qquad \end{array} @@ -4925,7 +4925,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash {\mathit{nt}} {.} {\mathit{binop}}_{\mathit{nt}} : {\mathit{nt}}~{\mathit{nt}} \rightarrow {\mathit{nt}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{nt}} {.} {\mathit{binop}}_{\mathit{nt}} : {\mathit{nt}}~{\mathit{nt}} \rightarrow {\mathit{nt}} } \, {[\textsc{\scriptsize T{-}binop}]} \qquad \end{array} @@ -4935,7 +4935,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash {\mathit{nt}} {.} {\mathit{testop}}_{\mathit{nt}} : {\mathit{nt}} \rightarrow \mathsf{i{\scriptstyle32}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{nt}} {.} {\mathit{testop}}_{\mathit{nt}} : {\mathit{nt}} \rightarrow \mathsf{i{\scriptstyle 32}} } \, {[\textsc{\scriptsize T{-}testop}]} \qquad \end{array} @@ -4945,7 +4945,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash {\mathit{nt}} {.} {\mathit{relop}}_{\mathit{nt}} : {\mathit{nt}}~{\mathit{nt}} \rightarrow \mathsf{i{\scriptstyle32}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{nt}} {.} {\mathit{relop}}_{\mathit{nt}} : {\mathit{nt}}~{\mathit{nt}} \rightarrow \mathsf{i{\scriptstyle 32}} } \, {[\textsc{\scriptsize T{-}relop}]} \qquad \end{array} @@ -4958,7 +4958,7 @@ $$ \frac{ {|{\mathit{nt}}_1|} = {|{\mathit{nt}}_2|} }{ -C \vdash {\mathit{nt}}_1 {.} {\mathsf{reinterpret}}{\mathsf{\_}}{{\mathit{nt}}_2} : {\mathit{nt}}_2 \rightarrow {\mathit{nt}}_1 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{nt}}_1 {.} {\mathsf{reinterpret}}{\mathsf{\_}}{{\mathit{nt}}_2} : {\mathit{nt}}_2 \rightarrow {\mathit{nt}}_1 } \, {[\textsc{\scriptsize T{-}cvtop{-}reinterpret}]} \qquad \end{array} @@ -4967,9 +4967,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -{{\mathit{sx}}^?} = \epsilon \Leftrightarrow {\mathit{nt}}_1 = {{\mathsf{i}}{n}}_1 \land {\mathit{nt}}_2 = {{\mathsf{i}}{n}}_2 \land {|{\mathit{nt}}_1|} > {|{\mathit{nt}}_2|} \lor {\mathit{nt}}_1 = {{\mathsf{f}}{n}}_1 \land {\mathit{nt}}_2 = {{\mathsf{f}}{n}}_2 +{{\mathit{sx}}^?} = \epsilon \Leftrightarrow {\mathit{nt}}_1 = {{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_1 \land {\mathit{nt}}_2 = {{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}_2 \land {|{\mathit{nt}}_1|} > {|{\mathit{nt}}_2|} \lor {\mathit{nt}}_1 = {{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}_1 \land {\mathit{nt}}_2 = {{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}_2 }{ -C \vdash {\mathit{nt}}_1 {.} {\mathsf{convert}}{\mathsf{\_}}{{\mathit{nt}}_2} : {\mathit{nt}}_2 \rightarrow {\mathit{nt}}_1 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{nt}}_1 {.} {\mathsf{convert}}{\mathsf{\_}}{{\mathit{nt}}_2} : {\mathit{nt}}_2 \rightarrow {\mathit{nt}}_1 } \, {[\textsc{\scriptsize T{-}cvtop{-}convert}]} \qquad \end{array} @@ -4980,9 +4980,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{ht}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{ht}} : \mathsf{ok} }{ -C \vdash \mathsf{ref.null}~{\mathit{ht}} : \epsilon \rightarrow (\mathsf{ref}~\mathsf{null}~{\mathit{ht}}) +{\mathit{{\scriptstyle C}}} \vdash \mathsf{ref.null}~{\mathit{ht}} : \epsilon \rightarrow (\mathsf{ref}~\mathsf{null}~{\mathit{ht}}) } \, {[\textsc{\scriptsize T{-}ref.null}]} \qquad \end{array} @@ -4991,9 +4991,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{funcs}{}[x] = {\mathit{dt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{funcs}{}[x] = {\mathit{dt}} }{ -C \vdash \mathsf{ref.func}~x : \epsilon \rightarrow (\mathsf{ref}~{\mathit{dt}}) +{\mathit{{\scriptstyle C}}} \vdash \mathsf{ref.func}~x : \epsilon \rightarrow (\mathsf{ref}~{\mathit{dt}}) } \, {[\textsc{\scriptsize T{-}ref.func}]} \qquad \end{array} @@ -5003,7 +5003,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \mathsf{ref.i{\scriptstyle31}} : \mathsf{i{\scriptstyle32}} \rightarrow (\mathsf{ref}~\mathsf{i{\scriptstyle31}}) +{\mathit{{\scriptstyle C}}} \vdash \mathsf{ref.i{\scriptstyle 31}} : \mathsf{i{\scriptstyle 32}} \rightarrow (\mathsf{ref}~\mathsf{i{\scriptstyle 31}}) } \, {[\textsc{\scriptsize T{-}ref.i31}]} \qquad \end{array} @@ -5012,9 +5012,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{ht}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{ht}} : \mathsf{ok} }{ -C \vdash \mathsf{ref.is\_null} : (\mathsf{ref}~\mathsf{null}~{\mathit{ht}}) \rightarrow \mathsf{i{\scriptstyle32}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{ref.is\_null} : (\mathsf{ref}~\mathsf{null}~{\mathit{ht}}) \rightarrow \mathsf{i{\scriptstyle 32}} } \, {[\textsc{\scriptsize T{-}ref.is\_null}]} \qquad \end{array} @@ -5023,9 +5023,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{ht}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{ht}} : \mathsf{ok} }{ -C \vdash \mathsf{ref.as\_non\_null} : (\mathsf{ref}~\mathsf{null}~{\mathit{ht}}) \rightarrow (\mathsf{ref}~{\mathit{ht}}) +{\mathit{{\scriptstyle C}}} \vdash \mathsf{ref.as\_non\_null} : (\mathsf{ref}~\mathsf{null}~{\mathit{ht}}) \rightarrow (\mathsf{ref}~{\mathit{ht}}) } \, {[\textsc{\scriptsize T{-}ref.as\_non\_null}]} \qquad \end{array} @@ -5035,7 +5035,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \mathsf{ref.eq} : (\mathsf{ref}~\mathsf{null}~\mathsf{eq})~(\mathsf{ref}~\mathsf{null}~\mathsf{eq}) \rightarrow \mathsf{i{\scriptstyle32}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{ref.eq} : (\mathsf{ref}~\mathsf{null}~\mathsf{eq})~(\mathsf{ref}~\mathsf{null}~\mathsf{eq}) \rightarrow \mathsf{i{\scriptstyle 32}} } \, {[\textsc{\scriptsize T{-}ref.eq}]} \qquad \end{array} @@ -5044,13 +5044,13 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{rt}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{rt}} : \mathsf{ok} \qquad -C \vdash {\mathit{rt}'} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{rt}'} : \mathsf{ok} \qquad -C \vdash {\mathit{rt}} \leq {\mathit{rt}'} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{rt}} \leq {\mathit{rt}'} }{ -C \vdash \mathsf{ref.test}~{\mathit{rt}} : {\mathit{rt}'} \rightarrow \mathsf{i{\scriptstyle32}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{ref.test}~{\mathit{rt}} : {\mathit{rt}'} \rightarrow \mathsf{i{\scriptstyle 32}} } \, {[\textsc{\scriptsize T{-}ref.test}]} \qquad \end{array} @@ -5059,13 +5059,13 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{rt}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{rt}} : \mathsf{ok} \qquad -C \vdash {\mathit{rt}'} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{rt}'} : \mathsf{ok} \qquad -C \vdash {\mathit{rt}} \leq {\mathit{rt}'} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{rt}} \leq {\mathit{rt}'} }{ -C \vdash \mathsf{ref.cast}~{\mathit{rt}} : {\mathit{rt}'} \rightarrow {\mathit{rt}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{ref.cast}~{\mathit{rt}} : {\mathit{rt}'} \rightarrow {\mathit{rt}} } \, {[\textsc{\scriptsize T{-}ref.cast}]} \qquad \end{array} @@ -5077,7 +5077,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash {\mathsf{i{\scriptstyle31}.get}}{\mathsf{\_}}{{\mathit{sx}}} : (\mathsf{ref}~\mathsf{null}~\mathsf{i{\scriptstyle31}}) \rightarrow \mathsf{i{\scriptstyle32}} +{\mathit{{\scriptstyle C}}} \vdash {\mathsf{i{\scriptstyle 31}.get}}{\mathsf{\_}}{{\mathit{sx}}} : (\mathsf{ref}~\mathsf{null}~\mathsf{i{\scriptstyle 31}}) \rightarrow \mathsf{i{\scriptstyle 32}} } \, {[\textsc{\scriptsize T{-}i31.get}]} \qquad \end{array} @@ -5088,9 +5088,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{types}{}[x] \approx \mathsf{struct}~{({\mathsf{mut}^?}~{\mathit{zt}})^\ast} +{\mathit{{\scriptstyle C}}}{.}\mathsf{types}{}[x] \approx \mathsf{struct}~{({\mathsf{mut}^?}~{\mathit{zt}})^\ast} }{ -C \vdash \mathsf{struct.new}~x : {{\mathrm{unpack}}({\mathit{zt}})^\ast} \rightarrow (\mathsf{ref}~x) +{\mathit{{\scriptstyle C}}} \vdash \mathsf{struct.new}~x : {{\mathrm{unpack}}({\mathit{zt}})^\ast} \rightarrow (\mathsf{ref}~x) } \, {[\textsc{\scriptsize T{-}struct.new}]} \qquad \end{array} @@ -5099,11 +5099,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{types}{}[x] \approx \mathsf{struct}~{({\mathsf{mut}^?}~{\mathit{zt}})^\ast} +{\mathit{{\scriptstyle C}}}{.}\mathsf{types}{}[x] \approx \mathsf{struct}~{({\mathsf{mut}^?}~{\mathit{zt}})^\ast} \qquad ({{\mathrm{default}}}_{{\mathrm{unpack}}({\mathit{zt}})} = {\mathit{val}})^\ast }{ -C \vdash \mathsf{struct.new\_default}~x : \epsilon \rightarrow (\mathsf{ref}~x) +{\mathit{{\scriptstyle C}}} \vdash \mathsf{struct.new\_default}~x : \epsilon \rightarrow (\mathsf{ref}~x) } \, {[\textsc{\scriptsize T{-}struct.new\_default}]} \qquad \end{array} @@ -5112,13 +5112,13 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{types}{}[x] \approx \mathsf{struct}~{{\mathit{yt}}^\ast} +{\mathit{{\scriptstyle C}}}{.}\mathsf{types}{}[x] \approx \mathsf{struct}~{{\mathit{yt}}^\ast} \qquad {{\mathit{yt}}^\ast}{}[i] = {\mathsf{mut}^?}~{\mathit{zt}} \qquad {{\mathit{sx}}^?} = \epsilon \Leftrightarrow {\mathit{zt}} = {\mathrm{unpack}}({\mathit{zt}}) }{ -C \vdash {\mathsf{struct.get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x~i : (\mathsf{ref}~\mathsf{null}~x) \rightarrow {\mathrm{unpack}}({\mathit{zt}}) +{\mathit{{\scriptstyle C}}} \vdash {\mathsf{struct.get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x~i : (\mathsf{ref}~\mathsf{null}~x) \rightarrow {\mathrm{unpack}}({\mathit{zt}}) } \, {[\textsc{\scriptsize T{-}struct.get}]} \qquad \end{array} @@ -5127,11 +5127,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{types}{}[x] \approx \mathsf{struct}~{{\mathit{yt}}^\ast} +{\mathit{{\scriptstyle C}}}{.}\mathsf{types}{}[x] \approx \mathsf{struct}~{{\mathit{yt}}^\ast} \qquad {{\mathit{yt}}^\ast}{}[i] = \mathsf{mut}~{\mathit{zt}} }{ -C \vdash \mathsf{struct.set}~x~i : (\mathsf{ref}~\mathsf{null}~x)~{\mathrm{unpack}}({\mathit{zt}}) \rightarrow \epsilon +{\mathit{{\scriptstyle C}}} \vdash \mathsf{struct.set}~x~i : (\mathsf{ref}~\mathsf{null}~x)~{\mathrm{unpack}}({\mathit{zt}}) \rightarrow \epsilon } \, {[\textsc{\scriptsize T{-}struct.set}]} \qquad \end{array} @@ -5142,9 +5142,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{types}{}[x] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{zt}}) +{\mathit{{\scriptstyle C}}}{.}\mathsf{types}{}[x] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{zt}}) }{ -C \vdash \mathsf{array.new}~x : {\mathrm{unpack}}({\mathit{zt}})~\mathsf{i{\scriptstyle32}} \rightarrow (\mathsf{ref}~x) +{\mathit{{\scriptstyle C}}} \vdash \mathsf{array.new}~x : {\mathrm{unpack}}({\mathit{zt}})~\mathsf{i{\scriptstyle 32}} \rightarrow (\mathsf{ref}~x) } \, {[\textsc{\scriptsize T{-}array.new}]} \qquad \end{array} @@ -5153,11 +5153,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{types}{}[x] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{zt}}) +{\mathit{{\scriptstyle C}}}{.}\mathsf{types}{}[x] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{zt}}) \qquad {{\mathrm{default}}}_{{\mathrm{unpack}}({\mathit{zt}})} = {\mathit{val}} }{ -C \vdash \mathsf{array.new\_default}~x : \mathsf{i{\scriptstyle32}} \rightarrow (\mathsf{ref}~x) +{\mathit{{\scriptstyle C}}} \vdash \mathsf{array.new\_default}~x : \mathsf{i{\scriptstyle 32}} \rightarrow (\mathsf{ref}~x) } \, {[\textsc{\scriptsize T{-}array.new\_default}]} \qquad \end{array} @@ -5166,9 +5166,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{types}{}[x] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{zt}}) +{\mathit{{\scriptstyle C}}}{.}\mathsf{types}{}[x] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{zt}}) }{ -C \vdash \mathsf{array.new\_fixed}~x~n : {{\mathrm{unpack}}({\mathit{zt}})^{n}} \rightarrow (\mathsf{ref}~x) +{\mathit{{\scriptstyle C}}} \vdash \mathsf{array.new\_fixed}~x~n : {{\mathrm{unpack}}({\mathit{zt}})^{n}} \rightarrow (\mathsf{ref}~x) } \, {[\textsc{\scriptsize T{-}array.new\_fixed}]} \qquad \end{array} @@ -5177,11 +5177,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{types}{}[x] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{rt}}) +{\mathit{{\scriptstyle C}}}{.}\mathsf{types}{}[x] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{rt}}) \qquad -C \vdash C{.}\mathsf{elems}{}[y] \leq {\mathit{rt}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{{\scriptstyle C}}}{.}\mathsf{elems}{}[y] \leq {\mathit{rt}} }{ -C \vdash \mathsf{array.new\_elem}~x~y : \mathsf{i{\scriptstyle32}}~\mathsf{i{\scriptstyle32}} \rightarrow (\mathsf{ref}~x) +{\mathit{{\scriptstyle C}}} \vdash \mathsf{array.new\_elem}~x~y : \mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}} \rightarrow (\mathsf{ref}~x) } \, {[\textsc{\scriptsize T{-}array.new\_elem}]} \qquad \end{array} @@ -5190,13 +5190,13 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{types}{}[x] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{zt}}) +{\mathit{{\scriptstyle C}}}{.}\mathsf{types}{}[x] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{zt}}) \qquad {\mathrm{unpack}}({\mathit{zt}}) = {\mathit{numtype}} \lor {\mathrm{unpack}}({\mathit{zt}}) = {\mathit{vectype}} \qquad -C{.}\mathsf{datas}{}[y] = \mathsf{ok} +{\mathit{{\scriptstyle C}}}{.}\mathsf{datas}{}[y] = \mathsf{ok} }{ -C \vdash \mathsf{array.new\_data}~x~y : \mathsf{i{\scriptstyle32}}~\mathsf{i{\scriptstyle32}} \rightarrow (\mathsf{ref}~x) +{\mathit{{\scriptstyle C}}} \vdash \mathsf{array.new\_data}~x~y : \mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}} \rightarrow (\mathsf{ref}~x) } \, {[\textsc{\scriptsize T{-}array.new\_data}]} \qquad \end{array} @@ -5205,11 +5205,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{types}{}[x] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{zt}}) +{\mathit{{\scriptstyle C}}}{.}\mathsf{types}{}[x] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{zt}}) \qquad {{\mathit{sx}}^?} = \epsilon \Leftrightarrow {\mathit{zt}} = {\mathrm{unpack}}({\mathit{zt}}) }{ -C \vdash {\mathsf{array.get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x : (\mathsf{ref}~\mathsf{null}~x)~\mathsf{i{\scriptstyle32}} \rightarrow {\mathrm{unpack}}({\mathit{zt}}) +{\mathit{{\scriptstyle C}}} \vdash {\mathsf{array.get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x : (\mathsf{ref}~\mathsf{null}~x)~\mathsf{i{\scriptstyle 32}} \rightarrow {\mathrm{unpack}}({\mathit{zt}}) } \, {[\textsc{\scriptsize T{-}array.get}]} \qquad \end{array} @@ -5218,9 +5218,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{types}{}[x] \approx \mathsf{array}~(\mathsf{mut}~{\mathit{zt}}) +{\mathit{{\scriptstyle C}}}{.}\mathsf{types}{}[x] \approx \mathsf{array}~(\mathsf{mut}~{\mathit{zt}}) }{ -C \vdash \mathsf{array.set}~x : (\mathsf{ref}~\mathsf{null}~x)~\mathsf{i{\scriptstyle32}}~{\mathrm{unpack}}({\mathit{zt}}) \rightarrow \epsilon +{\mathit{{\scriptstyle C}}} \vdash \mathsf{array.set}~x : (\mathsf{ref}~\mathsf{null}~x)~\mathsf{i{\scriptstyle 32}}~{\mathrm{unpack}}({\mathit{zt}}) \rightarrow \epsilon } \, {[\textsc{\scriptsize T{-}array.set}]} \qquad \end{array} @@ -5229,9 +5229,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{types}{}[x] \approx \mathsf{array}~(\mathsf{mut}~{\mathit{zt}}) +{\mathit{{\scriptstyle C}}}{.}\mathsf{types}{}[x] \approx \mathsf{array}~(\mathsf{mut}~{\mathit{zt}}) }{ -C \vdash \mathsf{array.len} : (\mathsf{ref}~\mathsf{null}~\mathsf{array}) \rightarrow \mathsf{i{\scriptstyle32}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{array.len} : (\mathsf{ref}~\mathsf{null}~\mathsf{array}) \rightarrow \mathsf{i{\scriptstyle 32}} } \, {[\textsc{\scriptsize T{-}array.len}]} \qquad \end{array} @@ -5240,9 +5240,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{types}{}[x] \approx \mathsf{array}~(\mathsf{mut}~{\mathit{zt}}) +{\mathit{{\scriptstyle C}}}{.}\mathsf{types}{}[x] \approx \mathsf{array}~(\mathsf{mut}~{\mathit{zt}}) }{ -C \vdash \mathsf{array.fill}~x : (\mathsf{ref}~\mathsf{null}~x)~\mathsf{i{\scriptstyle32}}~{\mathrm{unpack}}({\mathit{zt}})~\mathsf{i{\scriptstyle32}} \rightarrow \epsilon +{\mathit{{\scriptstyle C}}} \vdash \mathsf{array.fill}~x : (\mathsf{ref}~\mathsf{null}~x)~\mathsf{i{\scriptstyle 32}}~{\mathrm{unpack}}({\mathit{zt}})~\mathsf{i{\scriptstyle 32}} \rightarrow \epsilon } \, {[\textsc{\scriptsize T{-}array.fill}]} \qquad \end{array} @@ -5251,13 +5251,13 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{types}{}[x_1] \approx \mathsf{array}~(\mathsf{mut}~{\mathit{zt}}_1) +{\mathit{{\scriptstyle C}}}{.}\mathsf{types}{}[x_1] \approx \mathsf{array}~(\mathsf{mut}~{\mathit{zt}}_1) \qquad -C{.}\mathsf{types}{}[x_2] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{zt}}_2) +{\mathit{{\scriptstyle C}}}{.}\mathsf{types}{}[x_2] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{zt}}_2) \qquad -C \vdash {\mathit{zt}}_2 \leq {\mathit{zt}}_1 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{zt}}_2 \leq {\mathit{zt}}_1 }{ -C \vdash \mathsf{array.copy}~x_1~x_2 : (\mathsf{ref}~\mathsf{null}~x_1)~\mathsf{i{\scriptstyle32}}~(\mathsf{ref}~\mathsf{null}~x_2)~\mathsf{i{\scriptstyle32}}~\mathsf{i{\scriptstyle32}} \rightarrow \epsilon +{\mathit{{\scriptstyle C}}} \vdash \mathsf{array.copy}~x_1~x_2 : (\mathsf{ref}~\mathsf{null}~x_1)~\mathsf{i{\scriptstyle 32}}~(\mathsf{ref}~\mathsf{null}~x_2)~\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}} \rightarrow \epsilon } \, {[\textsc{\scriptsize T{-}array.copy}]} \qquad \end{array} @@ -5266,11 +5266,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{types}{}[x] \approx \mathsf{array}~(\mathsf{mut}~{\mathit{zt}}) +{\mathit{{\scriptstyle C}}}{.}\mathsf{types}{}[x] \approx \mathsf{array}~(\mathsf{mut}~{\mathit{zt}}) \qquad -C \vdash C{.}\mathsf{elems}{}[y] \leq {\mathit{zt}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{{\scriptstyle C}}}{.}\mathsf{elems}{}[y] \leq {\mathit{zt}} }{ -C \vdash \mathsf{array.init\_elem}~x~y : (\mathsf{ref}~\mathsf{null}~x)~\mathsf{i{\scriptstyle32}}~\mathsf{i{\scriptstyle32}}~\mathsf{i{\scriptstyle32}} \rightarrow \epsilon +{\mathit{{\scriptstyle C}}} \vdash \mathsf{array.init\_elem}~x~y : (\mathsf{ref}~\mathsf{null}~x)~\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}} \rightarrow \epsilon } \, {[\textsc{\scriptsize T{-}array.init\_elem}]} \qquad \end{array} @@ -5279,13 +5279,13 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{types}{}[x] \approx \mathsf{array}~(\mathsf{mut}~{\mathit{zt}}) +{\mathit{{\scriptstyle C}}}{.}\mathsf{types}{}[x] \approx \mathsf{array}~(\mathsf{mut}~{\mathit{zt}}) \qquad {\mathrm{unpack}}({\mathit{zt}}) = {\mathit{numtype}} \lor {\mathrm{unpack}}({\mathit{zt}}) = {\mathit{vectype}} \qquad -C{.}\mathsf{datas}{}[y] = \mathsf{ok} +{\mathit{{\scriptstyle C}}}{.}\mathsf{datas}{}[y] = \mathsf{ok} }{ -C \vdash \mathsf{array.init\_data}~x~y : (\mathsf{ref}~\mathsf{null}~x)~\mathsf{i{\scriptstyle32}}~\mathsf{i{\scriptstyle32}}~\mathsf{i{\scriptstyle32}} \rightarrow \epsilon +{\mathit{{\scriptstyle C}}} \vdash \mathsf{array.init\_data}~x~y : (\mathsf{ref}~\mathsf{null}~x)~\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}} \rightarrow \epsilon } \, {[\textsc{\scriptsize T{-}array.init\_data}]} \qquad \end{array} @@ -5297,7 +5297,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \mathsf{extern.convert\_any} : (\mathsf{ref}~{\mathsf{null}^?}~\mathsf{any}) \rightarrow (\mathsf{ref}~{\mathsf{null}^?}~\mathsf{extern}) +{\mathit{{\scriptstyle C}}} \vdash \mathsf{extern.convert\_any} : (\mathsf{ref}~{\mathsf{null}^?}~\mathsf{any}) \rightarrow (\mathsf{ref}~{\mathsf{null}^?}~\mathsf{extern}) } \, {[\textsc{\scriptsize T{-}extern.convert\_any}]} \qquad \end{array} @@ -5307,7 +5307,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \mathsf{any.convert\_extern} : (\mathsf{ref}~{\mathsf{null}^?}~\mathsf{extern}) \rightarrow (\mathsf{ref}~{\mathsf{null}^?}~\mathsf{any}) +{\mathit{{\scriptstyle C}}} \vdash \mathsf{any.convert\_extern} : (\mathsf{ref}~{\mathsf{null}^?}~\mathsf{extern}) \rightarrow (\mathsf{ref}~{\mathsf{null}^?}~\mathsf{any}) } \, {[\textsc{\scriptsize T{-}any.convert\_extern}]} \qquad \end{array} @@ -5319,7 +5319,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c : \epsilon \rightarrow \mathsf{v{\scriptstyle128}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c : \epsilon \rightarrow \mathsf{v{\scriptstyle 128}} } \, {[\textsc{\scriptsize T{-}vconst}]} \qquad \end{array} @@ -5329,7 +5329,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \mathsf{v{\scriptstyle128}} {.} {\mathit{vvunop}} : \mathsf{v{\scriptstyle128}} \rightarrow \mathsf{v{\scriptstyle128}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{v{\scriptstyle 128}} {.} {\mathit{vvunop}} : \mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{v{\scriptstyle 128}} } \, {[\textsc{\scriptsize T{-}vvunop}]} \qquad \end{array} @@ -5339,7 +5339,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \mathsf{v{\scriptstyle128}} {.} {\mathit{vvbinop}} : \mathsf{v{\scriptstyle128}}~\mathsf{v{\scriptstyle128}} \rightarrow \mathsf{v{\scriptstyle128}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{v{\scriptstyle 128}} {.} {\mathit{vvbinop}} : \mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{v{\scriptstyle 128}} } \, {[\textsc{\scriptsize T{-}vvbinop}]} \qquad \end{array} @@ -5349,7 +5349,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \mathsf{v{\scriptstyle128}} {.} {\mathit{vvternop}} : \mathsf{v{\scriptstyle128}}~\mathsf{v{\scriptstyle128}}~\mathsf{v{\scriptstyle128}} \rightarrow \mathsf{v{\scriptstyle128}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{v{\scriptstyle 128}} {.} {\mathit{vvternop}} : \mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{v{\scriptstyle 128}} } \, {[\textsc{\scriptsize T{-}vvternop}]} \qquad \end{array} @@ -5359,7 +5359,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \mathsf{v{\scriptstyle128}} {.} {\mathit{vvtestop}} : \mathsf{v{\scriptstyle128}} \rightarrow \mathsf{i{\scriptstyle32}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{v{\scriptstyle 128}} {.} {\mathit{vvtestop}} : \mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{i{\scriptstyle 32}} } \, {[\textsc{\scriptsize T{-}vvtestop}]} \qquad \end{array} @@ -5369,7 +5369,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash {\mathit{sh}} {.} {\mathit{vunop}}_{\mathit{sh}} : \mathsf{v{\scriptstyle128}} \rightarrow \mathsf{v{\scriptstyle128}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{sh}} {.} {\mathit{vunop}} : \mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{v{\scriptstyle 128}} } \, {[\textsc{\scriptsize T{-}vunop}]} \qquad \end{array} @@ -5379,7 +5379,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash {\mathit{sh}} {.} {\mathit{vbinop}}_{\mathit{sh}} : \mathsf{v{\scriptstyle128}}~\mathsf{v{\scriptstyle128}} \rightarrow \mathsf{v{\scriptstyle128}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{sh}} {.} {\mathit{vbinop}} : \mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{v{\scriptstyle 128}} } \, {[\textsc{\scriptsize T{-}vbinop}]} \qquad \end{array} @@ -5389,7 +5389,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash {\mathit{sh}} {.} {\mathit{vtestop}}_{\mathit{sh}} : \mathsf{v{\scriptstyle128}} \rightarrow \mathsf{i{\scriptstyle32}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{sh}} {.} {\mathit{vtestop}} : \mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{i{\scriptstyle 32}} } \, {[\textsc{\scriptsize T{-}vtestop}]} \qquad \end{array} @@ -5399,7 +5399,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash {\mathit{sh}} {.} {\mathit{vrelop}}_{\mathit{sh}} : \mathsf{v{\scriptstyle128}}~\mathsf{v{\scriptstyle128}} \rightarrow \mathsf{v{\scriptstyle128}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{sh}} {.} {\mathit{vrelop}} : \mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{v{\scriptstyle 128}} } \, {[\textsc{\scriptsize T{-}vrelop}]} \qquad \end{array} @@ -5409,7 +5409,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash {\mathit{sh}} {.} {\mathit{vshiftop}}_{\mathit{sh}} : \mathsf{v{\scriptstyle128}}~\mathsf{i{\scriptstyle32}} \rightarrow \mathsf{v{\scriptstyle128}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{sh}} {.} {\mathit{vshiftop}} : \mathsf{v{\scriptstyle 128}}~\mathsf{i{\scriptstyle 32}} \rightarrow \mathsf{v{\scriptstyle 128}} } \, {[\textsc{\scriptsize T{-}vshiftop}]} \qquad \end{array} @@ -5419,7 +5419,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash {\mathit{sh}}{.}\mathsf{bitmask} : \mathsf{v{\scriptstyle128}} \rightarrow \mathsf{i{\scriptstyle32}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{sh}}{.}\mathsf{bitmask} : \mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{i{\scriptstyle 32}} } \, {[\textsc{\scriptsize T{-}vbitmask}]} \qquad \end{array} @@ -5429,7 +5429,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash {\mathit{sh}}{.}\mathsf{swizzle} : \mathsf{v{\scriptstyle128}}~\mathsf{v{\scriptstyle128}} \rightarrow \mathsf{v{\scriptstyle128}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{sh}}{.}\mathsf{swizzle} : \mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{v{\scriptstyle 128}} } \, {[\textsc{\scriptsize T{-}vswizzle}]} \qquad \end{array} @@ -5440,7 +5440,7 @@ $$ \frac{ (i < 2 \cdot {\mathrm{dim}}({\mathit{sh}}))^\ast }{ -C \vdash {\mathit{sh}}{.}\mathsf{shuffle}~{i^\ast} : \mathsf{v{\scriptstyle128}}~\mathsf{v{\scriptstyle128}} \rightarrow \mathsf{v{\scriptstyle128}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{sh}}{.}\mathsf{shuffle}~{i^\ast} : \mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{v{\scriptstyle 128}} } \, {[\textsc{\scriptsize T{-}vshuffle}]} \qquad \end{array} @@ -5450,7 +5450,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash {\mathit{sh}}{.}\mathsf{splat} : {\mathrm{unpack}}({\mathit{sh}}) \rightarrow \mathsf{v{\scriptstyle128}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{sh}}{.}\mathsf{splat} : {\mathrm{unpack}}({\mathit{sh}}) \rightarrow \mathsf{v{\scriptstyle 128}} } \, {[\textsc{\scriptsize T{-}vsplat}]} \qquad \end{array} @@ -5461,7 +5461,7 @@ $$ \frac{ i < {\mathrm{dim}}({\mathit{sh}}) }{ -C \vdash {{\mathit{sh}}{.}\mathsf{extract\_lane}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~i : \mathsf{v{\scriptstyle128}} \rightarrow {\mathrm{unpack}}({\mathit{sh}}) +{\mathit{{\scriptstyle C}}} \vdash {{\mathit{sh}}{.}\mathsf{extract\_lane}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~i : \mathsf{v{\scriptstyle 128}} \rightarrow {\mathrm{unpack}}({\mathit{sh}}) } \, {[\textsc{\scriptsize T{-}vextract\_lane}]} \qquad \end{array} @@ -5472,7 +5472,7 @@ $$ \frac{ i < {\mathrm{dim}}({\mathit{sh}}) }{ -C \vdash {\mathit{sh}}{.}\mathsf{replace\_lane}~i : \mathsf{v{\scriptstyle128}}~{\mathrm{unpack}}({\mathit{sh}}) \rightarrow \mathsf{v{\scriptstyle128}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{sh}}{.}\mathsf{replace\_lane}~i : \mathsf{v{\scriptstyle 128}}~{\mathrm{unpack}}({\mathit{sh}}) \rightarrow \mathsf{v{\scriptstyle 128}} } \, {[\textsc{\scriptsize T{-}vreplace\_lane}]} \qquad \end{array} @@ -5482,7 +5482,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash {\mathit{sh}}_1 {.} {{\mathit{vextunop}}}{\mathsf{\_}}{{\mathit{sh}}_2}{\mathsf{\_}}{{\mathit{sx}}} : \mathsf{v{\scriptstyle128}} \rightarrow \mathsf{v{\scriptstyle128}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{sh}}_1 {.} {{\mathit{vextunop}}}{\mathsf{\_}}{{\mathit{sh}}_2}{\mathsf{\_}}{{\mathit{sx}}} : \mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{v{\scriptstyle 128}} } \, {[\textsc{\scriptsize T{-}vextunop}]} \qquad \end{array} @@ -5492,7 +5492,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash {\mathit{sh}}_1 {.} {{\mathit{vextbinop}}}{\mathsf{\_}}{{\mathit{sh}}_2}{\mathsf{\_}}{{\mathit{sx}}} : \mathsf{v{\scriptstyle128}}~\mathsf{v{\scriptstyle128}} \rightarrow \mathsf{v{\scriptstyle128}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{sh}}_1 {.} {{\mathit{vextbinop}}}{\mathsf{\_}}{{\mathit{sh}}_2}{\mathsf{\_}}{{\mathit{sx}}} : \mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{v{\scriptstyle 128}} } \, {[\textsc{\scriptsize T{-}vextbinop}]} \qquad \end{array} @@ -5502,7 +5502,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash {{\mathit{sh}}_1{.}\mathsf{narrow}}{\mathsf{\_}}{{\mathit{sh}}_2}{\mathsf{\_}}{{\mathit{sx}}} : \mathsf{v{\scriptstyle128}}~\mathsf{v{\scriptstyle128}} \rightarrow \mathsf{v{\scriptstyle128}} +{\mathit{{\scriptstyle C}}} \vdash {{\mathit{sh}}_1{.}\mathsf{narrow}}{\mathsf{\_}}{{\mathit{sh}}_2}{\mathsf{\_}}{{\mathit{sx}}} : \mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{v{\scriptstyle 128}} } \, {[\textsc{\scriptsize T{-}vnarrow}]} \qquad \end{array} @@ -5511,9 +5511,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -{{\mathit{sx}}^?} = \epsilon \Leftrightarrow {\mathrm{lanetype}}({\mathit{sh}}_1) = {\mathit{imm}}_1 \land {\mathrm{lanetype}}({\mathit{sh}}_2) = {\mathit{imm}}_2 \land {|{\mathit{imm}}_1|} > {|{\mathit{imm}}_2|} \lor {\mathrm{lanetype}}({\mathit{sh}}_1) = {{\mathsf{f}}{n}}_1 \land {\mathrm{lanetype}}({\mathit{sh}}_2) = {{\mathsf{f}}{n}}_2 +{{\mathit{sx}}^?} = \epsilon \Leftrightarrow {\mathrm{lanetype}}({\mathit{sh}}_1) = {\mathit{imm}}_1 \land {\mathrm{lanetype}}({\mathit{sh}}_2) = {\mathit{imm}}_2 \land {|{\mathit{imm}}_1|} > {|{\mathit{imm}}_2|} \lor {\mathrm{lanetype}}({\mathit{sh}}_1) = {{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}_1 \land {\mathrm{lanetype}}({\mathit{sh}}_2) = {{\mathsf{f}}{{\mathit{{\scriptstyle N}}}}}_2 }{ -C \vdash {\mathit{sh}}_1 {.} {{\mathit{vcvtop}}}{\mathsf{\_}}{{\mathit{sh}}_2} : \mathsf{v{\scriptstyle128}} \rightarrow \mathsf{v{\scriptstyle128}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{sh}}_1 {.} {{\mathit{vcvtop}}}{\mathsf{\_}}{{\mathit{sh}}_2} : \mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{v{\scriptstyle 128}} } \, {[\textsc{\scriptsize T{-}vcvtop}]} \qquad \end{array} @@ -5524,9 +5524,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{locals}{}[x] = \mathsf{set}~t +{\mathit{{\scriptstyle C}}}{.}\mathsf{locals}{}[x] = \mathsf{set}~t }{ -C \vdash \mathsf{local.get}~x : \epsilon \rightarrow t +{\mathit{{\scriptstyle C}}} \vdash \mathsf{local.get}~x : \epsilon \rightarrow t } \, {[\textsc{\scriptsize T{-}local.get}]} \qquad \end{array} @@ -5535,9 +5535,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{locals}{}[x] = {\mathit{init}}~t +{\mathit{{\scriptstyle C}}}{.}\mathsf{locals}{}[x] = {\mathit{init}}~t }{ -C \vdash \mathsf{local.set}~x : t~{\rightarrow}_{x}\,\epsilon +{\mathit{{\scriptstyle C}}} \vdash \mathsf{local.set}~x : t~{\rightarrow}_{x}\,\epsilon } \, {[\textsc{\scriptsize T{-}local.set}]} \qquad \end{array} @@ -5546,9 +5546,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{locals}{}[x] = {\mathit{init}}~t +{\mathit{{\scriptstyle C}}}{.}\mathsf{locals}{}[x] = {\mathit{init}}~t }{ -C \vdash \mathsf{local.tee}~x : t~{\rightarrow}_{x}\,t +{\mathit{{\scriptstyle C}}} \vdash \mathsf{local.tee}~x : t~{\rightarrow}_{x}\,t } \, {[\textsc{\scriptsize T{-}local.tee}]} \qquad \end{array} @@ -5559,9 +5559,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{globals}{}[x] = {\mathsf{mut}^?}~t +{\mathit{{\scriptstyle C}}}{.}\mathsf{globals}{}[x] = {\mathsf{mut}^?}~t }{ -C \vdash \mathsf{global.get}~x : \epsilon \rightarrow t +{\mathit{{\scriptstyle C}}} \vdash \mathsf{global.get}~x : \epsilon \rightarrow t } \, {[\textsc{\scriptsize T{-}global.get}]} \qquad \end{array} @@ -5570,9 +5570,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{globals}{}[x] = \mathsf{mut}~t +{\mathit{{\scriptstyle C}}}{.}\mathsf{globals}{}[x] = \mathsf{mut}~t }{ -C \vdash \mathsf{global.set}~x : t \rightarrow \epsilon +{\mathit{{\scriptstyle C}}} \vdash \mathsf{global.set}~x : t \rightarrow \epsilon } \, {[\textsc{\scriptsize T{-}global.set}]} \qquad \end{array} @@ -5583,9 +5583,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{tables}{}[x] = {\mathit{lim}}~{\mathit{rt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{tables}{}[x] = {\mathit{lim}}~{\mathit{rt}} }{ -C \vdash \mathsf{table.get}~x : \mathsf{i{\scriptstyle32}} \rightarrow {\mathit{rt}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{table.get}~x : \mathsf{i{\scriptstyle 32}} \rightarrow {\mathit{rt}} } \, {[\textsc{\scriptsize T{-}table.get}]} \qquad \end{array} @@ -5594,9 +5594,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{tables}{}[x] = {\mathit{lim}}~{\mathit{rt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{tables}{}[x] = {\mathit{lim}}~{\mathit{rt}} }{ -C \vdash \mathsf{table.set}~x : \mathsf{i{\scriptstyle32}}~{\mathit{rt}} \rightarrow \epsilon +{\mathit{{\scriptstyle C}}} \vdash \mathsf{table.set}~x : \mathsf{i{\scriptstyle 32}}~{\mathit{rt}} \rightarrow \epsilon } \, {[\textsc{\scriptsize T{-}table.set}]} \qquad \end{array} @@ -5605,9 +5605,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{tables}{}[x] = {\mathit{lim}}~{\mathit{rt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{tables}{}[x] = {\mathit{lim}}~{\mathit{rt}} }{ -C \vdash \mathsf{table.size}~x : \epsilon \rightarrow \mathsf{i{\scriptstyle32}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{table.size}~x : \epsilon \rightarrow \mathsf{i{\scriptstyle 32}} } \, {[\textsc{\scriptsize T{-}table.size}]} \qquad \end{array} @@ -5616,9 +5616,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{tables}{}[x] = {\mathit{lim}}~{\mathit{rt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{tables}{}[x] = {\mathit{lim}}~{\mathit{rt}} }{ -C \vdash \mathsf{table.grow}~x : {\mathit{rt}}~\mathsf{i{\scriptstyle32}} \rightarrow \mathsf{i{\scriptstyle32}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{table.grow}~x : {\mathit{rt}}~\mathsf{i{\scriptstyle 32}} \rightarrow \mathsf{i{\scriptstyle 32}} } \, {[\textsc{\scriptsize T{-}table.grow}]} \qquad \end{array} @@ -5627,9 +5627,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{tables}{}[x] = {\mathit{lim}}~{\mathit{rt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{tables}{}[x] = {\mathit{lim}}~{\mathit{rt}} }{ -C \vdash \mathsf{table.fill}~x : \mathsf{i{\scriptstyle32}}~{\mathit{rt}}~\mathsf{i{\scriptstyle32}} \rightarrow \epsilon +{\mathit{{\scriptstyle C}}} \vdash \mathsf{table.fill}~x : \mathsf{i{\scriptstyle 32}}~{\mathit{rt}}~\mathsf{i{\scriptstyle 32}} \rightarrow \epsilon } \, {[\textsc{\scriptsize T{-}table.fill}]} \qquad \end{array} @@ -5638,13 +5638,13 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{tables}{}[x_1] = {\mathit{lim}}_1~{\mathit{rt}}_1 +{\mathit{{\scriptstyle C}}}{.}\mathsf{tables}{}[x_1] = {\mathit{lim}}_1~{\mathit{rt}}_1 \qquad -C{.}\mathsf{tables}{}[x_2] = {\mathit{lim}}_2~{\mathit{rt}}_2 +{\mathit{{\scriptstyle C}}}{.}\mathsf{tables}{}[x_2] = {\mathit{lim}}_2~{\mathit{rt}}_2 \qquad -C \vdash {\mathit{rt}}_2 \leq {\mathit{rt}}_1 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{rt}}_2 \leq {\mathit{rt}}_1 }{ -C \vdash \mathsf{table.copy}~x_1~x_2 : \mathsf{i{\scriptstyle32}}~\mathsf{i{\scriptstyle32}}~\mathsf{i{\scriptstyle32}} \rightarrow \epsilon +{\mathit{{\scriptstyle C}}} \vdash \mathsf{table.copy}~x_1~x_2 : \mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}} \rightarrow \epsilon } \, {[\textsc{\scriptsize T{-}table.copy}]} \qquad \end{array} @@ -5653,13 +5653,13 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{tables}{}[x] = {\mathit{lim}}~{\mathit{rt}}_1 +{\mathit{{\scriptstyle C}}}{.}\mathsf{tables}{}[x] = {\mathit{lim}}~{\mathit{rt}}_1 \qquad -C{.}\mathsf{elems}{}[y] = {\mathit{rt}}_2 +{\mathit{{\scriptstyle C}}}{.}\mathsf{elems}{}[y] = {\mathit{rt}}_2 \qquad -C \vdash {\mathit{rt}}_2 \leq {\mathit{rt}}_1 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{rt}}_2 \leq {\mathit{rt}}_1 }{ -C \vdash \mathsf{table.init}~x~y : \mathsf{i{\scriptstyle32}}~\mathsf{i{\scriptstyle32}}~\mathsf{i{\scriptstyle32}} \rightarrow \epsilon +{\mathit{{\scriptstyle C}}} \vdash \mathsf{table.init}~x~y : \mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}} \rightarrow \epsilon } \, {[\textsc{\scriptsize T{-}table.init}]} \qquad \end{array} @@ -5668,9 +5668,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{elems}{}[x] = {\mathit{rt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{elems}{}[x] = {\mathit{rt}} }{ -C \vdash \mathsf{elem.drop}~x : \epsilon \rightarrow \epsilon +{\mathit{{\scriptstyle C}}} \vdash \mathsf{elem.drop}~x : \epsilon \rightarrow \epsilon } \, {[\textsc{\scriptsize T{-}elem.drop}]} \qquad \end{array} @@ -5681,9 +5681,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{mems}{}[x] = {\mathit{mt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{mems}{}[x] = {\mathit{mt}} }{ -C \vdash \mathsf{memory.size}~x : \epsilon \rightarrow \mathsf{i{\scriptstyle32}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{memory.size}~x : \epsilon \rightarrow \mathsf{i{\scriptstyle 32}} } \, {[\textsc{\scriptsize T{-}memory.size}]} \qquad \end{array} @@ -5692,9 +5692,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{mems}{}[x] = {\mathit{mt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{mems}{}[x] = {\mathit{mt}} }{ -C \vdash \mathsf{memory.grow}~x : \mathsf{i{\scriptstyle32}} \rightarrow \mathsf{i{\scriptstyle32}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{memory.grow}~x : \mathsf{i{\scriptstyle 32}} \rightarrow \mathsf{i{\scriptstyle 32}} } \, {[\textsc{\scriptsize T{-}memory.grow}]} \qquad \end{array} @@ -5703,9 +5703,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{mems}{}[x] = {\mathit{mt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{mems}{}[x] = {\mathit{mt}} }{ -C \vdash \mathsf{memory.fill}~x : \mathsf{i{\scriptstyle32}}~\mathsf{i{\scriptstyle32}}~\mathsf{i{\scriptstyle32}} \rightarrow \epsilon +{\mathit{{\scriptstyle C}}} \vdash \mathsf{memory.fill}~x : \mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}} \rightarrow \epsilon } \, {[\textsc{\scriptsize T{-}memory.fill}]} \qquad \end{array} @@ -5714,11 +5714,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{mems}{}[x_1] = {\mathit{mt}}_1 +{\mathit{{\scriptstyle C}}}{.}\mathsf{mems}{}[x_1] = {\mathit{mt}}_1 \qquad -C{.}\mathsf{mems}{}[x_2] = {\mathit{mt}}_2 +{\mathit{{\scriptstyle C}}}{.}\mathsf{mems}{}[x_2] = {\mathit{mt}}_2 }{ -C \vdash \mathsf{memory.copy}~x_1~x_2 : \mathsf{i{\scriptstyle32}}~\mathsf{i{\scriptstyle32}}~\mathsf{i{\scriptstyle32}} \rightarrow \epsilon +{\mathit{{\scriptstyle C}}} \vdash \mathsf{memory.copy}~x_1~x_2 : \mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}} \rightarrow \epsilon } \, {[\textsc{\scriptsize T{-}memory.copy}]} \qquad \end{array} @@ -5727,11 +5727,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{mems}{}[x] = {\mathit{mt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{mems}{}[x] = {\mathit{mt}} \qquad -C{.}\mathsf{datas}{}[y] = \mathsf{ok} +{\mathit{{\scriptstyle C}}}{.}\mathsf{datas}{}[y] = \mathsf{ok} }{ -C \vdash \mathsf{memory.init}~x~y : \mathsf{i{\scriptstyle32}}~\mathsf{i{\scriptstyle32}}~\mathsf{i{\scriptstyle32}} \rightarrow \epsilon +{\mathit{{\scriptstyle C}}} \vdash \mathsf{memory.init}~x~y : \mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}} \rightarrow \epsilon } \, {[\textsc{\scriptsize T{-}memory.init}]} \qquad \end{array} @@ -5740,9 +5740,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{datas}{}[x] = \mathsf{ok} +{\mathit{{\scriptstyle C}}}{.}\mathsf{datas}{}[x] = \mathsf{ok} }{ -C \vdash \mathsf{data.drop}~x : \epsilon \rightarrow \epsilon +{\mathit{{\scriptstyle C}}} \vdash \mathsf{data.drop}~x : \epsilon \rightarrow \epsilon } \, {[\textsc{\scriptsize T{-}data.drop}]} \qquad \end{array} @@ -5751,15 +5751,15 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{mems}{}[x] = {\mathit{mt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{mems}{}[x] = {\mathit{mt}} \qquad {2^{{\mathit{memarg}}{.}\mathsf{align}}} \leq {|{\mathit{nt}}|} / 8 \qquad ({2^{{\mathit{memarg}}{.}\mathsf{align}}} \leq n / 8 < {|{\mathit{nt}}|} / 8)^? \qquad -{n^?} = \epsilon \lor {\mathit{nt}} = {\mathsf{i}}{n} +{n^?} = \epsilon \lor {\mathit{nt}} = {\mathsf{i}}{{\mathit{{\scriptstyle N}}}} }{ -C \vdash {{\mathit{nt}}{.}\mathsf{load}}{{({n}{\mathsf{\_}}{{\mathit{sx}}})^?}}~x~{\mathit{memarg}} : \mathsf{i{\scriptstyle32}} \rightarrow {\mathit{nt}} +{\mathit{{\scriptstyle C}}} \vdash {{\mathit{nt}}{.}\mathsf{load}}{{({n}{\mathsf{\_}}{{\mathit{sx}}})^?}}~x~{\mathit{memarg}} : \mathsf{i{\scriptstyle 32}} \rightarrow {\mathit{nt}} } \, {[\textsc{\scriptsize T{-}load}]} \qquad \end{array} @@ -5768,15 +5768,15 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{mems}{}[x] = {\mathit{mt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{mems}{}[x] = {\mathit{mt}} \qquad {2^{{\mathit{memarg}}{.}\mathsf{align}}} \leq {|{\mathit{nt}}|} / 8 \qquad ({2^{{\mathit{memarg}}{.}\mathsf{align}}} \leq n / 8 < {|{\mathit{nt}}|} / 8)^? \qquad -{n^?} = \epsilon \lor {\mathit{nt}} = {\mathsf{i}}{n} +{n^?} = \epsilon \lor {\mathit{nt}} = {\mathsf{i}}{{\mathit{{\scriptstyle N}}}} }{ -C \vdash {{\mathit{nt}}{.}\mathsf{store}}{{n^?}}~x~{\mathit{memarg}} : \mathsf{i{\scriptstyle32}}~{\mathit{nt}} \rightarrow \epsilon +{\mathit{{\scriptstyle C}}} \vdash {{\mathit{nt}}{.}\mathsf{store}}{{n^?}}~x~{\mathit{memarg}} : \mathsf{i{\scriptstyle 32}}~{\mathit{nt}} \rightarrow \epsilon } \, {[\textsc{\scriptsize T{-}store}]} \qquad \end{array} @@ -5785,11 +5785,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{mems}{}[x] = {\mathit{mt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{mems}{}[x] = {\mathit{mt}} \qquad -{2^{{\mathit{memarg}}{.}\mathsf{align}}} \leq M / 8 \cdot N +{2^{{\mathit{memarg}}{.}\mathsf{align}}} \leq {\mathit{{\scriptstyle M}}} / 8 \cdot {\mathit{{\scriptstyle N}}} }{ -C \vdash {\mathsf{v{\scriptstyle128}}{.}\mathsf{load}}{{\mathsf{shape}}{M}{\mathsf{x}}{N}{{\mathit{sx}}}}~x~{\mathit{memarg}} : \mathsf{i{\scriptstyle32}} \rightarrow \mathsf{v{\scriptstyle128}} +{\mathit{{\scriptstyle C}}} \vdash {\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{{\mathit{{\scriptstyle M}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}{\mathsf{\_}}{{\mathit{sx}}}}~x~{\mathit{memarg}} : \mathsf{i{\scriptstyle 32}} \rightarrow \mathsf{v{\scriptstyle 128}} } \, {[\textsc{\scriptsize T{-}vload}]} \qquad \end{array} @@ -5798,11 +5798,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{mems}{}[x] = {\mathit{mt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{mems}{}[x] = {\mathit{mt}} \qquad {2^{{\mathit{memarg}}{.}\mathsf{align}}} \leq n / 8 }{ -C \vdash {\mathsf{v{\scriptstyle128}}{.}\mathsf{load}}{{\mathsf{splat}}{n}}~x~{\mathit{memarg}} : \mathsf{i{\scriptstyle32}} \rightarrow \mathsf{v{\scriptstyle128}} +{\mathit{{\scriptstyle C}}} \vdash {\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{n}{\mathsf{\_}}{\mathsf{splat}}}~x~{\mathit{memarg}} : \mathsf{i{\scriptstyle 32}} \rightarrow \mathsf{v{\scriptstyle 128}} } \, {[\textsc{\scriptsize T{-}vload{-}splat}]} \qquad \end{array} @@ -5811,11 +5811,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{mems}{}[x] = {\mathit{mt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{mems}{}[x] = {\mathit{mt}} \qquad {2^{{\mathit{memarg}}{.}\mathsf{align}}} < n / 8 }{ -C \vdash {\mathsf{v{\scriptstyle128}}{.}\mathsf{load}}{{\mathsf{zero}}{n}}~x~{\mathit{memarg}} : \mathsf{i{\scriptstyle32}} \rightarrow \mathsf{v{\scriptstyle128}} +{\mathit{{\scriptstyle C}}} \vdash {\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{n}{\mathsf{\_}}{\mathsf{zero}}}~x~{\mathit{memarg}} : \mathsf{i{\scriptstyle 32}} \rightarrow \mathsf{v{\scriptstyle 128}} } \, {[\textsc{\scriptsize T{-}vload{-}zero}]} \qquad \end{array} @@ -5824,13 +5824,13 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{mems}{}[x] = {\mathit{mt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{mems}{}[x] = {\mathit{mt}} \qquad {2^{{\mathit{memarg}}{.}\mathsf{align}}} < n / 8 \qquad {\mathit{laneidx}} < 128 / n }{ -C \vdash {\mathsf{v{\scriptstyle128}}{.}\mathsf{load}}{n}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{memarg}}~{\mathit{laneidx}} : \mathsf{i{\scriptstyle32}}~\mathsf{v{\scriptstyle128}} \rightarrow \mathsf{v{\scriptstyle128}} +{\mathit{{\scriptstyle C}}} \vdash {\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{n}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{memarg}}~{\mathit{laneidx}} : \mathsf{i{\scriptstyle 32}}~\mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{v{\scriptstyle 128}} } \, {[\textsc{\scriptsize T{-}vload\_lane}]} \qquad \end{array} @@ -5839,11 +5839,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{mems}{}[x] = {\mathit{mt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{mems}{}[x] = {\mathit{mt}} \qquad -{2^{{\mathit{memarg}}{.}\mathsf{align}}} \leq {|\mathsf{v{\scriptstyle128}}|} / 8 +{2^{{\mathit{memarg}}{.}\mathsf{align}}} \leq {|\mathsf{v{\scriptstyle 128}}|} / 8 }{ -C \vdash \mathsf{v{\scriptstyle128}}{.}\mathsf{store}~x~{\mathit{memarg}} : \mathsf{i{\scriptstyle32}}~\mathsf{v{\scriptstyle128}} \rightarrow \epsilon +{\mathit{{\scriptstyle C}}} \vdash \mathsf{v{\scriptstyle 128}}{.}\mathsf{store}~x~{\mathit{memarg}} : \mathsf{i{\scriptstyle 32}}~\mathsf{v{\scriptstyle 128}} \rightarrow \epsilon } \, {[\textsc{\scriptsize T{-}vstore}]} \qquad \end{array} @@ -5852,13 +5852,13 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{mems}{}[x] = {\mathit{mt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{mems}{}[x] = {\mathit{mt}} \qquad {2^{{\mathit{memarg}}{.}\mathsf{align}}} < n / 8 \qquad {\mathit{laneidx}} < 128 / n }{ -C \vdash {\mathsf{v{\scriptstyle128}}{.}\mathsf{store}}{n}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{memarg}}~{\mathit{laneidx}} : \mathsf{i{\scriptstyle32}}~\mathsf{v{\scriptstyle128}} \rightarrow \epsilon +{\mathit{{\scriptstyle C}}} \vdash {\mathsf{v{\scriptstyle 128}}{.}\mathsf{store}}{n}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{memarg}}~{\mathit{laneidx}} : \mathsf{i{\scriptstyle 32}}~\mathsf{v{\scriptstyle 128}} \rightarrow \epsilon } \, {[\textsc{\scriptsize T{-}vstore\_lane}]} \qquad \end{array} @@ -5876,7 +5876,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash ({\mathit{nt}}{.}\mathsf{const}~c_{\mathit{nt}})~\mathsf{const} +{\mathit{{\scriptstyle C}}} \vdash ({\mathit{nt}}{.}\mathsf{const}~c_{\mathit{nt}})~\mathsf{const} } \, {[\textsc{\scriptsize C{-}instr{-}const}]} \qquad \end{array} @@ -5886,7 +5886,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash ({\mathit{vt}}{.}\mathsf{const}~c_{\mathit{vt}})~\mathsf{const} +{\mathit{{\scriptstyle C}}} \vdash ({\mathit{vt}}{.}\mathsf{const}~c_{\mathit{vt}})~\mathsf{const} } \, {[\textsc{\scriptsize C{-}instr{-}vconst}]} \qquad \end{array} @@ -5896,7 +5896,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash (\mathsf{ref.null}~{\mathit{ht}})~\mathsf{const} +{\mathit{{\scriptstyle C}}} \vdash (\mathsf{ref.null}~{\mathit{ht}})~\mathsf{const} } \, {[\textsc{\scriptsize C{-}instr{-}ref.null}]} \qquad \end{array} @@ -5906,7 +5906,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash (\mathsf{ref.i{\scriptstyle31}})~\mathsf{const} +{\mathit{{\scriptstyle C}}} \vdash (\mathsf{ref.i{\scriptstyle 31}})~\mathsf{const} } \, {[\textsc{\scriptsize C{-}instr{-}ref.i31}]} \qquad \end{array} @@ -5916,7 +5916,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash (\mathsf{ref.func}~x)~\mathsf{const} +{\mathit{{\scriptstyle C}}} \vdash (\mathsf{ref.func}~x)~\mathsf{const} } \, {[\textsc{\scriptsize C{-}instr{-}ref.func}]} \qquad \end{array} @@ -5926,7 +5926,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash (\mathsf{struct.new}~x)~\mathsf{const} +{\mathit{{\scriptstyle C}}} \vdash (\mathsf{struct.new}~x)~\mathsf{const} } \, {[\textsc{\scriptsize C{-}instr{-}struct.new}]} \qquad \end{array} @@ -5936,7 +5936,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash (\mathsf{struct.new\_default}~x)~\mathsf{const} +{\mathit{{\scriptstyle C}}} \vdash (\mathsf{struct.new\_default}~x)~\mathsf{const} } \, {[\textsc{\scriptsize C{-}instr{-}struct.new\_default}]} \qquad \end{array} @@ -5946,7 +5946,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash (\mathsf{array.new}~x)~\mathsf{const} +{\mathit{{\scriptstyle C}}} \vdash (\mathsf{array.new}~x)~\mathsf{const} } \, {[\textsc{\scriptsize C{-}instr{-}array.new}]} \qquad \end{array} @@ -5956,7 +5956,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash (\mathsf{array.new\_default}~x)~\mathsf{const} +{\mathit{{\scriptstyle C}}} \vdash (\mathsf{array.new\_default}~x)~\mathsf{const} } \, {[\textsc{\scriptsize C{-}instr{-}array.new\_default}]} \qquad \end{array} @@ -5966,7 +5966,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash (\mathsf{array.new\_fixed}~x~n)~\mathsf{const} +{\mathit{{\scriptstyle C}}} \vdash (\mathsf{array.new\_fixed}~x~n)~\mathsf{const} } \, {[\textsc{\scriptsize C{-}instr{-}array.new\_fixed}]} \qquad \end{array} @@ -5976,7 +5976,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash (\mathsf{any.convert\_extern})~\mathsf{const} +{\mathit{{\scriptstyle C}}} \vdash (\mathsf{any.convert\_extern})~\mathsf{const} } \, {[\textsc{\scriptsize C{-}instr{-}any.convert\_extern}]} \qquad \end{array} @@ -5986,7 +5986,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash (\mathsf{extern.convert\_any})~\mathsf{const} +{\mathit{{\scriptstyle C}}} \vdash (\mathsf{extern.convert\_any})~\mathsf{const} } \, {[\textsc{\scriptsize C{-}instr{-}extern.convert\_any}]} \qquad \end{array} @@ -5995,9 +5995,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{globals}{}[x] = t +{\mathit{{\scriptstyle C}}}{.}\mathsf{globals}{}[x] = t }{ -C \vdash (\mathsf{global.get}~x)~\mathsf{const} +{\mathit{{\scriptstyle C}}} \vdash (\mathsf{global.get}~x)~\mathsf{const} } \, {[\textsc{\scriptsize C{-}instr{-}global.get}]} \qquad \end{array} @@ -6020,11 +6020,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -{\mathsf{i}}{n} \in \mathsf{i{\scriptstyle32}}~\mathsf{i{\scriptstyle64}} +{\mathsf{i}}{{\mathit{{\scriptstyle N}}}} \in \mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 64}} \qquad {\mathit{binop}} \in \mathsf{add}~\mathsf{sub}~\mathsf{mul} }{ -C \vdash ({\mathsf{i}}{n} {.} {\mathit{binop}})~\mathsf{const} +{\mathit{{\scriptstyle C}}} \vdash ({\mathsf{i}}{{\mathit{{\scriptstyle N}}}} {.} {\mathit{binop}})~\mathsf{const} } \, {[\textsc{\scriptsize C{-}instr{-}binop}]} \qquad \end{array} @@ -6035,9 +6035,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -(C \vdash {\mathit{instr}}~\mathsf{const})^\ast +({\mathit{{\scriptstyle C}}} \vdash {\mathit{instr}}~\mathsf{const})^\ast }{ -C \vdash {{\mathit{instr}}^\ast}~\mathsf{const} +{\mathit{{\scriptstyle C}}} \vdash {{\mathit{instr}}^\ast}~\mathsf{const} } \, {[\textsc{\scriptsize C{-}expr}]} \qquad \end{array} @@ -6048,11 +6048,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{expr}} : t +{\mathit{{\scriptstyle C}}} \vdash {\mathit{expr}} : t \qquad -C \vdash {\mathit{expr}}~\mathsf{const} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{expr}}~\mathsf{const} }{ -C \vdash {\mathit{expr}} : t~\mathsf{const} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{expr}} : t~\mathsf{const} } \, {[\textsc{\scriptsize TC{-}expr}]} \qquad \end{array} @@ -6087,13 +6087,13 @@ $\boxed{{\mathit{context}} \vdash {\mathit{start}} : \mathsf{ok}}$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -x = {|C{.}\mathsf{types}|} +x = {|{\mathit{{\scriptstyle C}}}{.}\mathsf{types}|} \qquad {{\mathit{dt}}^\ast} = {{{{\mathrm{roll}}}_{x}^\ast}}{{\mathit{rectype}}} \qquad -C{}[\mathsf{types} = ..{{\mathit{dt}}^\ast}] \vdash {\mathit{rectype}} : {\mathsf{ok}}{(x)} +{\mathit{{\scriptstyle C}}}{}[\mathsf{types} = ..{{\mathit{dt}}^\ast}] \vdash {\mathit{rectype}} : {\mathsf{ok}}{(x)} }{ -C \vdash \mathsf{type}~{\mathit{rectype}} : {{\mathit{dt}}^\ast} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{type}~{\mathit{rectype}} : {{\mathit{dt}}^\ast} } \, {[\textsc{\scriptsize T{-}type}]} \qquad \end{array} @@ -6104,7 +6104,7 @@ $$ \frac{ {{\mathrm{default}}}_{t} \neq \epsilon }{ -C \vdash \mathsf{local}~t : \mathsf{set}~t +{\mathit{{\scriptstyle C}}} \vdash \mathsf{local}~t : \mathsf{set}~t } \, {[\textsc{\scriptsize T{-}local{-}set}]} \qquad \end{array} @@ -6115,7 +6115,7 @@ $$ \frac{ {{\mathrm{default}}}_{t} = \epsilon }{ -C \vdash \mathsf{local}~t : \mathsf{unset}~t +{\mathit{{\scriptstyle C}}} \vdash \mathsf{local}~t : \mathsf{unset}~t } \, {[\textsc{\scriptsize T{-}local{-}unset}]} \qquad \end{array} @@ -6124,13 +6124,13 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{types}{}[x] \approx \mathsf{func}~({t_1^\ast} \rightarrow {t_2^\ast}) +{\mathit{{\scriptstyle C}}}{.}\mathsf{types}{}[x] \approx \mathsf{func}~({t_1^\ast} \rightarrow {t_2^\ast}) \qquad -(C \vdash {\mathit{local}} : {{\mathit{lt}}})^\ast +({\mathit{{\scriptstyle C}}} \vdash {\mathit{local}} : {{\mathit{lt}}})^\ast \qquad -C, \mathsf{locals}~{(\mathsf{set}~t_1)^\ast}~{{{\mathit{lt}}}^\ast}, \mathsf{labels}~({t_2^\ast}), \mathsf{return}~({t_2^\ast}) \vdash {\mathit{expr}} : {t_2^\ast} +{\mathit{{\scriptstyle C}}}, \mathsf{locals}~{(\mathsf{set}~t_1)^\ast}~{{{\mathit{lt}}}^\ast}, \mathsf{labels}~({t_2^\ast}), \mathsf{return}~({t_2^\ast}) \vdash {\mathit{expr}} : {t_2^\ast} }{ -C \vdash \mathsf{func}~x~{{\mathit{local}}^\ast}~{\mathit{expr}} : C{.}\mathsf{types}{}[x] +{\mathit{{\scriptstyle C}}} \vdash \mathsf{func}~x~{{\mathit{local}}^\ast}~{\mathit{expr}} : {\mathit{{\scriptstyle C}}}{.}\mathsf{types}{}[x] } \, {[\textsc{\scriptsize T{-}func}]} \qquad \end{array} @@ -6139,13 +6139,13 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{gt}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{gt}} : \mathsf{ok} \qquad {\mathit{gt}} = {\mathsf{mut}^?}~t \qquad -C \vdash {\mathit{expr}} : t~\mathsf{const} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{expr}} : t~\mathsf{const} }{ -C \vdash \mathsf{global}~{\mathit{gt}}~{\mathit{expr}} : {\mathit{gt}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{global}~{\mathit{gt}}~{\mathit{expr}} : {\mathit{gt}} } \, {[\textsc{\scriptsize T{-}global}]} \qquad \end{array} @@ -6154,13 +6154,13 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{tt}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{tt}} : \mathsf{ok} \qquad {\mathit{tt}} = {\mathit{limits}}~{\mathit{rt}} \qquad -C \vdash {\mathit{expr}} : {\mathit{rt}}~\mathsf{const} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{expr}} : {\mathit{rt}}~\mathsf{const} }{ -C \vdash \mathsf{table}~{\mathit{tt}}~{\mathit{expr}} : {\mathit{tt}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{table}~{\mathit{tt}}~{\mathit{expr}} : {\mathit{tt}} } \, {[\textsc{\scriptsize T{-}table}]} \qquad \end{array} @@ -6169,9 +6169,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{mt}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{mt}} : \mathsf{ok} }{ -C \vdash \mathsf{memory}~{\mathit{mt}} : {\mathit{mt}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{memory}~{\mathit{mt}} : {\mathit{mt}} } \, {[\textsc{\scriptsize T{-}mem}]} \qquad \end{array} @@ -6180,11 +6180,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -(C \vdash {\mathit{expr}} : {\mathit{rt}}~\mathsf{const})^\ast +({\mathit{{\scriptstyle C}}} \vdash {\mathit{expr}} : {\mathit{rt}}~\mathsf{const})^\ast \qquad -C \vdash {\mathit{elemmode}} : {\mathit{rt}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{elemmode}} : {\mathit{rt}} }{ -C \vdash \mathsf{elem}~{\mathit{rt}}~{{\mathit{expr}}^\ast}~{\mathit{elemmode}} : {\mathit{rt}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{elem}~{\mathit{rt}}~{{\mathit{expr}}^\ast}~{\mathit{elemmode}} : {\mathit{rt}} } \, {[\textsc{\scriptsize T{-}elem}]} \qquad \end{array} @@ -6193,9 +6193,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{datamode}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{datamode}} : \mathsf{ok} }{ -C \vdash \mathsf{data}~{b^\ast}~{\mathit{datamode}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{data}~{b^\ast}~{\mathit{datamode}} : \mathsf{ok} } \, {[\textsc{\scriptsize T{-}data}]} \qquad \end{array} @@ -6204,11 +6204,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{tables}{}[x] = {\mathit{lim}}~{\mathit{rt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{tables}{}[x] = {\mathit{lim}}~{\mathit{rt}} \qquad -(C \vdash {\mathit{expr}} : \mathsf{i{\scriptstyle32}}~\mathsf{const})^\ast +({\mathit{{\scriptstyle C}}} \vdash {\mathit{expr}} : \mathsf{i{\scriptstyle 32}}~\mathsf{const})^\ast }{ -C \vdash \mathsf{active}~x~{\mathit{expr}} : {\mathit{rt}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{active}~x~{\mathit{expr}} : {\mathit{rt}} } \, {[\textsc{\scriptsize T{-}elemmode{-}active}]} \qquad \end{array} @@ -6218,7 +6218,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \mathsf{passive} : {\mathit{rt}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{passive} : {\mathit{rt}} } \, {[\textsc{\scriptsize T{-}elemmode{-}passive}]} \qquad \end{array} @@ -6228,7 +6228,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \mathsf{declare} : {\mathit{rt}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{declare} : {\mathit{rt}} } \, {[\textsc{\scriptsize T{-}elemmode{-}declare}]} \qquad \end{array} @@ -6237,11 +6237,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{mems}{}[x] = {\mathit{mt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{mems}{}[x] = {\mathit{mt}} \qquad -(C \vdash {\mathit{expr}} : \mathsf{i{\scriptstyle32}}~\mathsf{const})^\ast +({\mathit{{\scriptstyle C}}} \vdash {\mathit{expr}} : \mathsf{i{\scriptstyle 32}}~\mathsf{const})^\ast }{ -C \vdash \mathsf{active}~x~{\mathit{expr}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{active}~x~{\mathit{expr}} : \mathsf{ok} } \, {[\textsc{\scriptsize T{-}datamode{-}active}]} \qquad \end{array} @@ -6251,7 +6251,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \mathsf{passive} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{passive} : \mathsf{ok} } \, {[\textsc{\scriptsize T{-}datamode{-}passive}]} \qquad \end{array} @@ -6260,9 +6260,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{funcs}{}[x] \approx \mathsf{func}~(\epsilon \rightarrow \epsilon) +{\mathit{{\scriptstyle C}}}{.}\mathsf{funcs}{}[x] \approx \mathsf{func}~(\epsilon \rightarrow \epsilon) }{ -C \vdash \mathsf{start}~x : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{start}~x : \mathsf{ok} } \, {[\textsc{\scriptsize T{-}start}]} \qquad \end{array} @@ -6279,9 +6279,9 @@ $\boxed{{\mathit{context}} \vdash {\mathit{externidx}} : {\mathit{externtype}}}$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{xt}} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{xt}} : \mathsf{ok} }{ -C \vdash \mathsf{import}~{\mathit{name}}_1~{\mathit{name}}_2~{\mathit{xt}} : {\mathit{xt}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{import}~{\mathit{name}}_1~{\mathit{name}}_2~{\mathit{xt}} : {\mathit{xt}} } \, {[\textsc{\scriptsize T{-}import}]} \qquad \end{array} @@ -6290,9 +6290,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{externidx}} : {\mathit{xt}} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{externidx}} : {\mathit{xt}} }{ -C \vdash \mathsf{export}~{\mathit{name}}~{\mathit{externidx}} : {\mathit{xt}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{export}~{\mathit{name}}~{\mathit{externidx}} : {\mathit{xt}} } \, {[\textsc{\scriptsize T{-}export}]} \qquad \end{array} @@ -6303,9 +6303,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{funcs}{}[x] = {\mathit{dt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{funcs}{}[x] = {\mathit{dt}} }{ -C \vdash \mathsf{func}~x : \mathsf{func}~{\mathit{dt}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{func}~x : \mathsf{func}~{\mathit{dt}} } \, {[\textsc{\scriptsize T{-}externidx{-}func}]} \qquad \end{array} @@ -6314,9 +6314,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{globals}{}[x] = {\mathit{gt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{globals}{}[x] = {\mathit{gt}} }{ -C \vdash \mathsf{global}~x : \mathsf{global}~{\mathit{gt}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{global}~x : \mathsf{global}~{\mathit{gt}} } \, {[\textsc{\scriptsize T{-}externidx{-}global}]} \qquad \end{array} @@ -6325,9 +6325,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{tables}{}[x] = {\mathit{tt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{tables}{}[x] = {\mathit{tt}} }{ -C \vdash \mathsf{table}~x : \mathsf{table}~{\mathit{tt}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{table}~x : \mathsf{table}~{\mathit{tt}} } \, {[\textsc{\scriptsize T{-}externidx{-}table}]} \qquad \end{array} @@ -6336,9 +6336,9 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C{.}\mathsf{mems}{}[x] = {\mathit{mt}} +{\mathit{{\scriptstyle C}}}{.}\mathsf{mems}{}[x] = {\mathit{mt}} }{ -C \vdash \mathsf{mem}~x : \mathsf{mem}~{\mathit{mt}} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{mem}~x : \mathsf{mem}~{\mathit{mt}} } \, {[\textsc{\scriptsize T{-}externidx{-}mem}]} \qquad \end{array} @@ -6362,26 +6362,26 @@ $$ (\{ \begin{array}[t]{@{}l@{}} \mathsf{types}~{{\mathit{dt}'}^\ast} \}\end{array} \vdash {\mathit{import}} : {\mathit{ixt}})^\ast \\ -{C'} \vdash {{\mathit{global}}^\ast} : {{\mathit{gt}}^\ast} +{\mathit{{\scriptstyle C}}'} \vdash {{\mathit{global}}^\ast} : {{\mathit{gt}}^\ast} \qquad -({C'} \vdash {\mathit{table}} : {\mathit{tt}})^\ast +({\mathit{{\scriptstyle C}}'} \vdash {\mathit{table}} : {\mathit{tt}})^\ast \qquad -({C'} \vdash {\mathit{mem}} : {\mathit{mt}})^\ast +({\mathit{{\scriptstyle C}}'} \vdash {\mathit{mem}} : {\mathit{mt}})^\ast \qquad -(C \vdash {\mathit{func}} : {\mathit{dt}})^\ast +({\mathit{{\scriptstyle C}}} \vdash {\mathit{func}} : {\mathit{dt}})^\ast \\ -(C \vdash {\mathit{elem}} : {\mathit{rt}})^\ast +({\mathit{{\scriptstyle C}}} \vdash {\mathit{elem}} : {\mathit{rt}})^\ast \qquad -(C \vdash {\mathit{data}} : \mathsf{ok})^{n} +({\mathit{{\scriptstyle C}}} \vdash {\mathit{data}} : \mathsf{ok})^{n} \qquad -(C \vdash {\mathit{start}} : \mathsf{ok})^? +({\mathit{{\scriptstyle C}}} \vdash {\mathit{start}} : \mathsf{ok})^? \qquad -(C \vdash {\mathit{export}} : {\mathit{xt}})^\ast +({\mathit{{\scriptstyle C}}} \vdash {\mathit{export}} : {\mathit{xt}})^\ast \\ -C = \{ \begin{array}[t]{@{}l@{}} +{\mathit{{\scriptstyle C}}} = \{ \begin{array}[t]{@{}l@{}} \mathsf{types}~{{\mathit{dt}'}^\ast},\; \mathsf{funcs}~{{\mathit{idt}}^\ast}~{{\mathit{dt}}^\ast},\; \mathsf{globals}~{{\mathit{igt}}^\ast}~{{\mathit{gt}}^\ast},\; \mathsf{tables}~{{\mathit{itt}}^\ast}~{{\mathit{tt}}^\ast},\; \mathsf{mems}~{{\mathit{imt}}^\ast}~{{\mathit{mt}}^\ast},\; \mathsf{elems}~{{\mathit{rt}}^\ast},\; \mathsf{datas}~{\mathsf{ok}^{n}} \}\end{array} \\ -{C'} = \{ \begin{array}[t]{@{}l@{}} +{\mathit{{\scriptstyle C}}'} = \{ \begin{array}[t]{@{}l@{}} \mathsf{types}~{{\mathit{dt}'}^\ast},\; \mathsf{funcs}~{{\mathit{idt}}^\ast}~{{\mathit{dt}}^\ast},\; \mathsf{globals}~{{\mathit{igt}}^\ast} \}\end{array} \\ {{\mathit{idt}}^\ast} = {\mathrm{funcs}}({{\mathit{ixt}}^\ast}) @@ -6405,7 +6405,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \epsilon : \epsilon +{\mathit{{\scriptstyle C}}} \vdash \epsilon : \epsilon } \, {[\textsc{\scriptsize T{-}types{-}empty}]} \qquad \end{array} @@ -6414,11 +6414,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{type}}_1 : {\mathit{dt}}_1 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{type}}_1 : {\mathit{dt}}_1 \qquad -C{}[\mathsf{types} = ..{{\mathit{dt}}_1^\ast}] \vdash {{\mathit{type}}^\ast} : {{\mathit{dt}}^\ast} +{\mathit{{\scriptstyle C}}}{}[\mathsf{types} = ..{{\mathit{dt}}_1^\ast}] \vdash {{\mathit{type}}^\ast} : {{\mathit{dt}}^\ast} }{ -C \vdash {\mathit{type}}_1~{{\mathit{type}}^\ast} : {{\mathit{dt}}_1^\ast}~{{\mathit{dt}}^\ast} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{type}}_1~{{\mathit{type}}^\ast} : {{\mathit{dt}}_1^\ast}~{{\mathit{dt}}^\ast} } \, {[\textsc{\scriptsize T{-}types{-}cons}]} \qquad \end{array} @@ -6428,7 +6428,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \epsilon : \epsilon +{\mathit{{\scriptstyle C}}} \vdash \epsilon : \epsilon } \, {[\textsc{\scriptsize T{-}globals{-}empty}]} \qquad \end{array} @@ -6437,11 +6437,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{global}} : {\mathit{gt}}_1 +{\mathit{{\scriptstyle C}}} \vdash {\mathit{global}} : {\mathit{gt}}_1 \qquad -C{}[\mathsf{globals} = ..{\mathit{gt}}_1] \vdash {{\mathit{global}}^\ast} : {{\mathit{gt}}^\ast} +{\mathit{{\scriptstyle C}}}{}[\mathsf{globals} = ..{\mathit{gt}}_1] \vdash {{\mathit{global}}^\ast} : {{\mathit{gt}}^\ast} }{ -C \vdash {\mathit{global}}_1~{{\mathit{global}}^\ast} : {\mathit{gt}}_1~{{\mathit{gt}}^\ast} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{global}}_1~{{\mathit{global}}^\ast} : {\mathit{gt}}_1~{{\mathit{gt}}^\ast} } \, {[\textsc{\scriptsize T{-}globals{-}cons}]} \qquad \end{array} @@ -6463,7 +6463,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -s \vdash \mathsf{ref.i{\scriptstyle31}}~i : (\mathsf{ref}~\epsilon~\mathsf{i{\scriptstyle31}}) +s \vdash \mathsf{ref.i{\scriptstyle 31}}~i : (\mathsf{ref}~\epsilon~\mathsf{i{\scriptstyle 31}}) } \, {[\textsc{\scriptsize Ref\_ok{-}i31}]} \qquad \end{array} @@ -6575,9 +6575,9 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}select{-}true}]} \quad & {\mathit{val}}_1~{\mathit{val}}_2~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~c)~(\mathsf{select}~{({t^\ast})^?}) &\hookrightarrow& {\mathit{val}}_1 +{[\textsc{\scriptsize E{-}select{-}true}]} \quad & {\mathit{val}}_1~{\mathit{val}}_2~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~c)~(\mathsf{select}~{({t^\ast})^?}) &\hookrightarrow& {\mathit{val}}_1 &\qquad \mbox{if}~c \neq 0 \\ -{[\textsc{\scriptsize E{-}select{-}false}]} \quad & {\mathit{val}}_1~{\mathit{val}}_2~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~c)~(\mathsf{select}~{({t^\ast})^?}) &\hookrightarrow& {\mathit{val}}_2 +{[\textsc{\scriptsize E{-}select{-}false}]} \quad & {\mathit{val}}_1~{\mathit{val}}_2~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~c)~(\mathsf{select}~{({t^\ast})^?}) &\hookrightarrow& {\mathit{val}}_2 &\qquad \mbox{if}~c = 0 \\ \end{array} $$ @@ -6604,9 +6604,9 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}if{-}true}]} \quad & (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~c)~(\mathsf{if}~{\mathit{bt}}~{{\mathit{instr}}_1^\ast}~\mathsf{else}~{{\mathit{instr}}_2^\ast}) &\hookrightarrow& (\mathsf{block}~{\mathit{bt}}~{{\mathit{instr}}_1^\ast}) +{[\textsc{\scriptsize E{-}if{-}true}]} \quad & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~c)~(\mathsf{if}~{\mathit{bt}}~{{\mathit{instr}}_1^\ast}~\mathsf{else}~{{\mathit{instr}}_2^\ast}) &\hookrightarrow& (\mathsf{block}~{\mathit{bt}}~{{\mathit{instr}}_1^\ast}) &\qquad \mbox{if}~c \neq 0 \\ -{[\textsc{\scriptsize E{-}if{-}false}]} \quad & (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~c)~(\mathsf{if}~{\mathit{bt}}~{{\mathit{instr}}_1^\ast}~\mathsf{else}~{{\mathit{instr}}_2^\ast}) &\hookrightarrow& (\mathsf{block}~{\mathit{bt}}~{{\mathit{instr}}_2^\ast}) +{[\textsc{\scriptsize E{-}if{-}false}]} \quad & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~c)~(\mathsf{if}~{\mathit{bt}}~{{\mathit{instr}}_1^\ast}~\mathsf{else}~{{\mathit{instr}}_2^\ast}) &\hookrightarrow& (\mathsf{block}~{\mathit{bt}}~{{\mathit{instr}}_2^\ast}) &\qquad \mbox{if}~c = 0 \\ \end{array} $$ @@ -6634,9 +6634,9 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}br\_if{-}true}]} \quad & (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~c)~(\mathsf{br\_if}~l) &\hookrightarrow& (\mathsf{br}~l) +{[\textsc{\scriptsize E{-}br\_if{-}true}]} \quad & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~c)~(\mathsf{br\_if}~l) &\hookrightarrow& (\mathsf{br}~l) &\qquad \mbox{if}~c \neq 0 \\ -{[\textsc{\scriptsize E{-}br\_if{-}false}]} \quad & (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~c)~(\mathsf{br\_if}~l) &\hookrightarrow& \epsilon +{[\textsc{\scriptsize E{-}br\_if{-}false}]} \quad & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~c)~(\mathsf{br\_if}~l) &\hookrightarrow& \epsilon &\qquad \mbox{if}~c = 0 \\ \end{array} $$ @@ -6645,9 +6645,9 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}br\_table{-}lt}]} \quad & (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{br\_table}~{l^\ast}~{l'}) &\hookrightarrow& (\mathsf{br}~{l^\ast}{}[i]) +{[\textsc{\scriptsize E{-}br\_table{-}lt}]} \quad & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{br\_table}~{l^\ast}~{l'}) &\hookrightarrow& (\mathsf{br}~{l^\ast}{}[i]) &\qquad \mbox{if}~i < {|{l^\ast}|} \\ -{[\textsc{\scriptsize E{-}br\_table{-}ge}]} \quad & (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{br\_table}~{l^\ast}~{l'}) &\hookrightarrow& (\mathsf{br}~{l'}) +{[\textsc{\scriptsize E{-}br\_table{-}ge}]} \quad & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{br\_table}~{l^\ast}~{l'}) &\hookrightarrow& (\mathsf{br}~{l'}) &\qquad \mbox{if}~i \geq {|{l^\ast}|} \\ \end{array} $$ @@ -6781,9 +6781,9 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}testop}]} \quad & ({\mathit{nt}}{.}\mathsf{const}~c_1)~({\mathit{nt}} {.} {\mathit{testop}}) &\hookrightarrow& (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~c) +{[\textsc{\scriptsize E{-}testop}]} \quad & ({\mathit{nt}}{.}\mathsf{const}~c_1)~({\mathit{nt}} {.} {\mathit{testop}}) &\hookrightarrow& (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~c) &\qquad \mbox{if}~c = {{\mathit{testop}}}{{}_{{\mathit{nt}}}}{(c_1)} \\ -{[\textsc{\scriptsize E{-}relop}]} \quad & ({\mathit{nt}}{.}\mathsf{const}~c_1)~({\mathit{nt}}{.}\mathsf{const}~c_2)~({\mathit{nt}} {.} {\mathit{relop}}) &\hookrightarrow& (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~c) +{[\textsc{\scriptsize E{-}relop}]} \quad & ({\mathit{nt}}{.}\mathsf{const}~c_1)~({\mathit{nt}}{.}\mathsf{const}~c_2)~({\mathit{nt}} {.} {\mathit{relop}}) &\hookrightarrow& (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~c) &\qquad \mbox{if}~c = {{\mathit{relop}}}{{}_{{\mathit{nt}}}}{(c_1,\, c_2)} \\ \end{array} $$ @@ -6810,7 +6810,7 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}ref.i31}]} \quad & (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~\mathsf{ref.i{\scriptstyle31}} &\hookrightarrow& (\mathsf{ref.i{\scriptstyle31}}~{{{\mathrm{wrap}}}_{32, 31}}{(i)}) \\ +{[\textsc{\scriptsize E{-}ref.i31}]} \quad & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~\mathsf{ref.i{\scriptstyle 31}} &\hookrightarrow& (\mathsf{ref.i{\scriptstyle 31}}~{{{\mathrm{wrap}}}_{32, 31}}{(i)}) \\ \end{array} $$ @@ -6818,9 +6818,9 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}ref.is\_null{-}true}]} \quad & {\mathit{ref}}~\mathsf{ref.is\_null} &\hookrightarrow& (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~1) +{[\textsc{\scriptsize E{-}ref.is\_null{-}true}]} \quad & {\mathit{ref}}~\mathsf{ref.is\_null} &\hookrightarrow& (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~1) &\qquad \mbox{if}~{\mathit{ref}} = (\mathsf{ref.null}~{\mathit{ht}}) \\ -{[\textsc{\scriptsize E{-}ref.is\_null{-}false}]} \quad & {\mathit{ref}}~\mathsf{ref.is\_null} &\hookrightarrow& (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~0) +{[\textsc{\scriptsize E{-}ref.is\_null{-}false}]} \quad & {\mathit{ref}}~\mathsf{ref.is\_null} &\hookrightarrow& (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~0) &\qquad \mbox{otherwise} \\ \end{array} $$ @@ -6840,11 +6840,11 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}ref.eq{-}null}]} \quad & {\mathit{ref}}_1~{\mathit{ref}}_2~\mathsf{ref.eq} &\hookrightarrow& (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~1) +{[\textsc{\scriptsize E{-}ref.eq{-}null}]} \quad & {\mathit{ref}}_1~{\mathit{ref}}_2~\mathsf{ref.eq} &\hookrightarrow& (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~1) &\qquad \mbox{if}~{\mathit{ref}}_1 = (\mathsf{ref.null}~{\mathit{ht}}_1) \land {\mathit{ref}}_2 = (\mathsf{ref.null}~{\mathit{ht}}_2) \\ -{[\textsc{\scriptsize E{-}ref.eq{-}true}]} \quad & {\mathit{ref}}_1~{\mathit{ref}}_2~\mathsf{ref.eq} &\hookrightarrow& (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~1) +{[\textsc{\scriptsize E{-}ref.eq{-}true}]} \quad & {\mathit{ref}}_1~{\mathit{ref}}_2~\mathsf{ref.eq} &\hookrightarrow& (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~1) &\qquad \mbox{otherwise, if}~{\mathit{ref}}_1 = {\mathit{ref}}_2 \\ -{[\textsc{\scriptsize E{-}ref.eq{-}false}]} \quad & {\mathit{ref}}_1~{\mathit{ref}}_2~\mathsf{ref.eq} &\hookrightarrow& (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~0) +{[\textsc{\scriptsize E{-}ref.eq{-}false}]} \quad & {\mathit{ref}}_1~{\mathit{ref}}_2~\mathsf{ref.eq} &\hookrightarrow& (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~0) &\qquad \mbox{otherwise} \\ \end{array} $$ @@ -6853,11 +6853,11 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}ref.test{-}true}]} \quad & s ; f ; {\mathit{ref}}~(\mathsf{ref.test}~{\mathit{rt}}) &\hookrightarrow& (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~1) +{[\textsc{\scriptsize E{-}ref.test{-}true}]} \quad & s ; f ; {\mathit{ref}}~(\mathsf{ref.test}~{\mathit{rt}}) &\hookrightarrow& (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~1) &\qquad \mbox{if}~s \vdash {\mathit{ref}} : {\mathit{rt}'} \\ &&&&\qquad {\land}~\{ \begin{array}[t]{@{}l@{}} \}\end{array} \vdash {\mathit{rt}'} \leq {{\mathrm{inst}}}_{f{.}\mathsf{module}}({\mathit{rt}}) \\ -{[\textsc{\scriptsize E{-}ref.test{-}false}]} \quad & s ; f ; {\mathit{ref}}~(\mathsf{ref.test}~{\mathit{rt}}) &\hookrightarrow& (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~0) +{[\textsc{\scriptsize E{-}ref.test{-}false}]} \quad & s ; f ; {\mathit{ref}}~(\mathsf{ref.test}~{\mathit{rt}}) &\hookrightarrow& (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~0) &\qquad \mbox{otherwise} \\ \end{array} $$ @@ -6879,8 +6879,8 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}i31.get{-}null}]} \quad & (\mathsf{ref.null}~{\mathit{ht}})~({\mathsf{i{\scriptstyle31}.get}}{\mathsf{\_}}{{\mathit{sx}}}) &\hookrightarrow& \mathsf{trap} \\ -{[\textsc{\scriptsize E{-}i31.get{-}num}]} \quad & (\mathsf{ref.i{\scriptstyle31}}~i)~({\mathsf{i{\scriptstyle31}.get}}{\mathsf{\_}}{{\mathit{sx}}}) &\hookrightarrow& (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~{{{{\mathrm{ext}}}_{31, 32}^{{\mathit{sx}}}}}{(i)}) \\ +{[\textsc{\scriptsize E{-}i31.get{-}null}]} \quad & (\mathsf{ref.null}~{\mathit{ht}})~({\mathsf{i{\scriptstyle 31}.get}}{\mathsf{\_}}{{\mathit{sx}}}) &\hookrightarrow& \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}i31.get{-}num}]} \quad & (\mathsf{ref.i{\scriptstyle 31}}~i)~({\mathsf{i{\scriptstyle 31}.get}}{\mathsf{\_}}{{\mathit{sx}}}) &\hookrightarrow& (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~{{{{\mathrm{ext}}}_{31, 32}^{{\mathit{sx}}}}}{(i)}) \\ \end{array} $$ @@ -6928,13 +6928,13 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}array.new}]} \quad & {\mathit{val}}~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{array.new}~x) &\hookrightarrow& {{\mathit{val}}^{n}}~(\mathsf{array.new\_fixed}~x~n) \\ +{[\textsc{\scriptsize E{-}array.new}]} \quad & {\mathit{val}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array.new}~x) &\hookrightarrow& {{\mathit{val}}^{n}}~(\mathsf{array.new\_fixed}~x~n) \\ \end{array} $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}array.new\_default}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{array.new\_default}~x) &\hookrightarrow& {{\mathit{val}}^{n}}~(\mathsf{array.new\_fixed}~x~n) +{[\textsc{\scriptsize E{-}array.new\_default}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array.new\_default}~x) &\hookrightarrow& {{\mathit{val}}^{n}}~(\mathsf{array.new\_fixed}~x~n) &\qquad \mbox{if}~z{.}\mathsf{types}{}[x] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{zt}}) \\ &&&&\qquad {\land}~{{\mathrm{default}}}_{{\mathrm{unpack}}({\mathit{zt}})} = {\mathit{val}} \\ \end{array} @@ -6953,9 +6953,9 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}array.new\_elem{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{array.new\_elem}~x~y) &\hookrightarrow& \mathsf{trap} +{[\textsc{\scriptsize E{-}array.new\_elem{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array.new\_elem}~x~y) &\hookrightarrow& \mathsf{trap} &\qquad \mbox{if}~i + n > {|z{.}\mathsf{elems}{}[y]{.}\mathsf{refs}|} \\ -{[\textsc{\scriptsize E{-}array.new\_elem{-}alloc}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{array.new\_elem}~x~y) &\hookrightarrow& \multicolumn{2}{l@{}}{ {{\mathit{ref}}^{n}}~(\mathsf{array.new\_fixed}~x~n) } \\ +{[\textsc{\scriptsize E{-}array.new\_elem{-}alloc}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array.new\_elem}~x~y) &\hookrightarrow& \multicolumn{2}{l@{}}{ {{\mathit{ref}}^{n}}~(\mathsf{array.new\_fixed}~x~n) } \\ &&& \multicolumn{2}{l@{}}{\quad \mbox{if}~{{\mathit{ref}}^{n}} = z{.}\mathsf{elems}{}[y]{.}\mathsf{refs}{}[i : n]} \\ \end{array} $$ @@ -6964,10 +6964,10 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}array.new\_data{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{array.new\_data}~x~y) &\hookrightarrow& \multicolumn{2}{l@{}}{ \mathsf{trap} } \\ +{[\textsc{\scriptsize E{-}array.new\_data{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array.new\_data}~x~y) &\hookrightarrow& \multicolumn{2}{l@{}}{ \mathsf{trap} } \\ &&& \multicolumn{2}{l@{}}{\quad \mbox{if}~z{.}\mathsf{types}{}[x] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{zt}})} \\ &&& \multicolumn{2}{l@{}}{\quad {\land}~i + n \cdot {|{\mathit{zt}}|} / 8 > {|z{.}\mathsf{datas}{}[y]{.}\mathsf{bytes}|}} \\ -{[\textsc{\scriptsize E{-}array.new\_data{-}num}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{array.new\_data}~x~y) &\hookrightarrow& \multicolumn{2}{l@{}}{ {({\mathrm{unpack}}({\mathit{zt}}){.}\mathsf{const}~{{\mathrm{unpack}}}_{{\mathit{zt}}}(c))^{n}}~(\mathsf{array.new\_fixed}~x~n) } \\ +{[\textsc{\scriptsize E{-}array.new\_data{-}num}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array.new\_data}~x~y) &\hookrightarrow& \multicolumn{2}{l@{}}{ {({\mathrm{unpack}}({\mathit{zt}}){.}\mathsf{const}~{{\mathrm{unpack}}}_{{\mathit{zt}}}(c))^{n}}~(\mathsf{array.new\_fixed}~x~n) } \\ &&& \multicolumn{2}{l@{}}{\quad \mbox{if}~z{.}\mathsf{types}{}[x] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{zt}})} \\ &&& \multicolumn{2}{l@{}}{\quad {\land}~{\mathrm{concat}}({{{\mathrm{bytes}}}_{{\mathit{zt}}}(c)^{n}}) = z{.}\mathsf{datas}{}[y]{.}\mathsf{bytes}{}[i : n \cdot {|{\mathit{zt}}|} / 8]} \\ \end{array} @@ -6977,10 +6977,10 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}array.get{-}null}]} \quad & z ; (\mathsf{ref.null}~{\mathit{ht}})~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~({\mathsf{array.get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x) &\hookrightarrow& \mathsf{trap} \\ -{[\textsc{\scriptsize E{-}array.get{-}oob}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~({\mathsf{array.get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x) &\hookrightarrow& \mathsf{trap} +{[\textsc{\scriptsize E{-}array.get{-}null}]} \quad & z ; (\mathsf{ref.null}~{\mathit{ht}})~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~({\mathsf{array.get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x) &\hookrightarrow& \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}array.get{-}oob}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~({\mathsf{array.get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x) &\hookrightarrow& \mathsf{trap} &\qquad \mbox{if}~i \geq {|z{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}|} \\ -{[\textsc{\scriptsize E{-}array.get{-}array}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~({\mathsf{array.get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x) &\hookrightarrow& \multicolumn{2}{l@{}}{ {{{{\mathrm{unpack}}}_{{\mathit{zt}}}^{{{\mathit{sx}}^?}}}}{(z{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}{}[i])} } \\ +{[\textsc{\scriptsize E{-}array.get{-}array}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~({\mathsf{array.get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x) &\hookrightarrow& \multicolumn{2}{l@{}}{ {{{{\mathrm{unpack}}}_{{\mathit{zt}}}^{{{\mathit{sx}}^?}}}}{(z{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}{}[i])} } \\ &&& \multicolumn{2}{l@{}}{\quad \mbox{if}~z{.}\mathsf{types}{}[x] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{zt}})} \\ \end{array} $$ @@ -6989,10 +6989,10 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}array.set{-}null}]} \quad & z ; (\mathsf{ref.null}~{\mathit{ht}})~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{array.set}~x) &\hookrightarrow& z ; \mathsf{trap} \\ -{[\textsc{\scriptsize E{-}array.set{-}oob}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{array.set}~x) &\hookrightarrow& z ; \mathsf{trap} +{[\textsc{\scriptsize E{-}array.set{-}null}]} \quad & z ; (\mathsf{ref.null}~{\mathit{ht}})~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{array.set}~x) &\hookrightarrow& z ; \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}array.set{-}oob}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{array.set}~x) &\hookrightarrow& z ; \mathsf{trap} &\qquad \mbox{if}~i \geq {|z{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}|} \\ -{[\textsc{\scriptsize E{-}array.set{-}array}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{array.set}~x) &\hookrightarrow& \multicolumn{2}{l@{}}{ z{}[\mathsf{arrays}{}[a]{.}\mathsf{fields}{}[i] = {{\mathrm{pack}}}_{{\mathit{zt}}}({\mathit{val}})] ; \epsilon } \\ +{[\textsc{\scriptsize E{-}array.set{-}array}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{array.set}~x) &\hookrightarrow& \multicolumn{2}{l@{}}{ z{}[\mathsf{arrays}{}[a]{.}\mathsf{fields}{}[i] = {{\mathrm{pack}}}_{{\mathit{zt}}}({\mathit{val}})] ; \epsilon } \\ &&& \multicolumn{2}{l@{}}{\quad \mbox{if}~z{.}\mathsf{types}{}[x] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{zt}})} \\ \end{array} $$ @@ -7002,7 +7002,7 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} {[\textsc{\scriptsize E{-}array.len{-}null}]} \quad & z ; (\mathsf{ref.null}~{\mathit{ht}})~\mathsf{array.len} &\hookrightarrow& \mathsf{trap} \\ -{[\textsc{\scriptsize E{-}array.len{-}array}]} \quad & z ; (\mathsf{ref.array}~a)~\mathsf{array.len} &\hookrightarrow& (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~{|z{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}|}) \\ +{[\textsc{\scriptsize E{-}array.len{-}array}]} \quad & z ; (\mathsf{ref.array}~a)~\mathsf{array.len} &\hookrightarrow& (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~{|z{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}|}) \\ \end{array} $$ @@ -7010,28 +7010,28 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}array.fill{-}null}]} \quad & z ; (\mathsf{ref.null}~{\mathit{ht}})~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{array.fill}~x) &\hookrightarrow& \mathsf{trap} \\ -{[\textsc{\scriptsize E{-}array.fill{-}oob}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{array.fill}~x) &\hookrightarrow& \mathsf{trap} +{[\textsc{\scriptsize E{-}array.fill{-}null}]} \quad & z ; (\mathsf{ref.null}~{\mathit{ht}})~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array.fill}~x) &\hookrightarrow& \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}array.fill{-}oob}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array.fill}~x) &\hookrightarrow& \mathsf{trap} &\qquad \mbox{if}~i + n > {|z{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}|} \\ -{[\textsc{\scriptsize E{-}array.fill{-}zero}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{array.fill}~x) &\hookrightarrow& \epsilon +{[\textsc{\scriptsize E{-}array.fill{-}zero}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array.fill}~x) &\hookrightarrow& \epsilon &\qquad \mbox{otherwise, if}~n = 0 \\ -{[\textsc{\scriptsize E{-}array.fill{-}succ}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{array.fill}~x) &\hookrightarrow& \\ - & \multicolumn{3}{@{}l@{}}{\qquad \begin{array}[t]{@{}l@{}} (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{array.set}~x) \\ (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i + 1)~{\mathit{val}}~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n - 1)~(\mathsf{array.fill}~x) \end{array} } +{[\textsc{\scriptsize E{-}array.fill{-}succ}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array.fill}~x) &\hookrightarrow& \\ + & \multicolumn{3}{@{}l@{}}{\qquad \begin{array}[t]{@{}l@{}} (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{array.set}~x) \\ (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i + 1)~{\mathit{val}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n - 1)~(\mathsf{array.fill}~x) \end{array} } &\qquad \mbox{otherwise} \\ -{[\textsc{\scriptsize E{-}array.copy{-}null1}]} \quad & z ; (\mathsf{ref.null}~{\mathit{ht}}_1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_1)~{\mathit{ref}}~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{array.copy}~x_1~x_2) &\hookrightarrow& \mathsf{trap} \\ -{[\textsc{\scriptsize E{-}array.copy{-}null2}]} \quad & z ; {\mathit{ref}}~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_1)~(\mathsf{ref.null}~{\mathit{ht}}_2)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{array.copy}~x_1~x_2) &\hookrightarrow& \mathsf{trap} \\ -{[\textsc{\scriptsize E{-}array.copy{-}oob1}]} \quad & z ; (\mathsf{ref.array}~a_1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_1)~(\mathsf{ref.array}~a_2)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{array.copy}~x_1~x_2) &\hookrightarrow& \multicolumn{2}{l@{}}{ \mathsf{trap} } \\ +{[\textsc{\scriptsize E{-}array.copy{-}null1}]} \quad & z ; (\mathsf{ref.null}~{\mathit{ht}}_1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_1)~{\mathit{ref}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array.copy}~x_1~x_2) &\hookrightarrow& \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}array.copy{-}null2}]} \quad & z ; {\mathit{ref}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_1)~(\mathsf{ref.null}~{\mathit{ht}}_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array.copy}~x_1~x_2) &\hookrightarrow& \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}array.copy{-}oob1}]} \quad & z ; (\mathsf{ref.array}~a_1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_1)~(\mathsf{ref.array}~a_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array.copy}~x_1~x_2) &\hookrightarrow& \multicolumn{2}{l@{}}{ \mathsf{trap} } \\ & \multicolumn{4}{@{}l@{}}{\qquad\quad \mbox{if}~i_1 + n > {|z{.}\mathsf{arrays}{}[a_1]{.}\mathsf{fields}|}} \\ -{[\textsc{\scriptsize E{-}array.copy{-}oob2}]} \quad & z ; (\mathsf{ref.array}~a_1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_1)~(\mathsf{ref.array}~a_2)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{array.copy}~x_1~x_2) &\hookrightarrow& \multicolumn{2}{l@{}}{ \mathsf{trap} } \\ +{[\textsc{\scriptsize E{-}array.copy{-}oob2}]} \quad & z ; (\mathsf{ref.array}~a_1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_1)~(\mathsf{ref.array}~a_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array.copy}~x_1~x_2) &\hookrightarrow& \multicolumn{2}{l@{}}{ \mathsf{trap} } \\ & \multicolumn{4}{@{}l@{}}{\qquad\quad \mbox{if}~i_2 + n > {|z{.}\mathsf{arrays}{}[a_2]{.}\mathsf{fields}|}} \\ -{[\textsc{\scriptsize E{-}array.copy{-}zero}]} \quad & z ; (\mathsf{ref.array}~a_1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_1)~(\mathsf{ref.array}~a_2)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{array.copy}~x_1~x_2) &\hookrightarrow& \multicolumn{2}{l@{}}{ \epsilon } \\ +{[\textsc{\scriptsize E{-}array.copy{-}zero}]} \quad & z ; (\mathsf{ref.array}~a_1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_1)~(\mathsf{ref.array}~a_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array.copy}~x_1~x_2) &\hookrightarrow& \multicolumn{2}{l@{}}{ \epsilon } \\ & \multicolumn{4}{@{}l@{}}{\qquad\quad \mbox{otherwise, if}~n = 0} \\ -{[\textsc{\scriptsize E{-}array.copy{-}le}]} \quad & z ; (\mathsf{ref.array}~a_1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_1)~(\mathsf{ref.array}~a_2)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{array.copy}~x_1~x_2) &\hookrightarrow& \\ - & \multicolumn{3}{@{}l@{}}{\qquad \begin{array}[t]{@{}l@{}} (\mathsf{ref.array}~a_1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_1) \\ (\mathsf{ref.array}~a_2)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_2) \\ ({\mathsf{array.get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x_2)~(\mathsf{array.set}~x_1) \\ (\mathsf{ref.array}~a_1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_1 + 1)~(\mathsf{ref.array}~a_2)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_2 + 1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n - 1)~(\mathsf{array.copy}~x_1~x_2) \end{array} } \\ +{[\textsc{\scriptsize E{-}array.copy{-}le}]} \quad & z ; (\mathsf{ref.array}~a_1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_1)~(\mathsf{ref.array}~a_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array.copy}~x_1~x_2) &\hookrightarrow& \\ + & \multicolumn{3}{@{}l@{}}{\qquad \begin{array}[t]{@{}l@{}} (\mathsf{ref.array}~a_1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_1) \\ (\mathsf{ref.array}~a_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_2) \\ ({\mathsf{array.get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x_2)~(\mathsf{array.set}~x_1) \\ (\mathsf{ref.array}~a_1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_1 + 1)~(\mathsf{ref.array}~a_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_2 + 1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n - 1)~(\mathsf{array.copy}~x_1~x_2) \end{array} } \\ & \multicolumn{4}{@{}l@{}}{\qquad\quad \mbox{otherwise, if}~z{.}\mathsf{types}{}[x_2] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{zt}}_2)} \\ & \multicolumn{4}{@{}l@{}}{\qquad\quad {\land}~i_1 \leq i_2 \land {{\mathit{sx}}^?} = {\mathrm{sx}}({\mathit{zt}}_2)} \\ -{[\textsc{\scriptsize E{-}array.copy{-}gt}]} \quad & z ; (\mathsf{ref.array}~a_1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_1)~(\mathsf{ref.array}~a_2)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{array.copy}~x_1~x_2) &\hookrightarrow& \\ - & \multicolumn{3}{@{}l@{}}{\qquad \begin{array}[t]{@{}l@{}} (\mathsf{ref.array}~a_1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_1 + n - 1) \\ (\mathsf{ref.array}~a_2)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_2 + n - 1) \\ ({\mathsf{array.get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x_2)~(\mathsf{array.set}~x_1) \\ (\mathsf{ref.array}~a_1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_1)~(\mathsf{ref.array}~a_2)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n - 1)~(\mathsf{array.copy}~x_1~x_2) \end{array} } \\ +{[\textsc{\scriptsize E{-}array.copy{-}gt}]} \quad & z ; (\mathsf{ref.array}~a_1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_1)~(\mathsf{ref.array}~a_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array.copy}~x_1~x_2) &\hookrightarrow& \\ + & \multicolumn{3}{@{}l@{}}{\qquad \begin{array}[t]{@{}l@{}} (\mathsf{ref.array}~a_1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_1 + n - 1) \\ (\mathsf{ref.array}~a_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_2 + n - 1) \\ ({\mathsf{array.get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x_2)~(\mathsf{array.set}~x_1) \\ (\mathsf{ref.array}~a_1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_1)~(\mathsf{ref.array}~a_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n - 1)~(\mathsf{array.copy}~x_1~x_2) \end{array} } \\ & \multicolumn{4}{@{}l@{}}{\qquad\quad \mbox{otherwise, if}~z{.}\mathsf{types}{}[x_2] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{zt}}_2)} \\ & \multicolumn{4}{@{}l@{}}{\qquad\quad {\land}~{{\mathit{sx}}^?} = {\mathrm{sx}}({\mathit{zt}}_2)} \\ \end{array} @@ -7041,15 +7041,15 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}array.init\_elem{-}null}]} \quad & z ; (\mathsf{ref.null}~{\mathit{ht}})~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{array.init\_elem}~x~y) &\hookrightarrow& \mathsf{trap} \\ -{[\textsc{\scriptsize E{-}array.init\_elem{-}oob1}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{array.init\_elem}~x~y) &\hookrightarrow& \multicolumn{2}{l@{}}{ \mathsf{trap} } \\ +{[\textsc{\scriptsize E{-}array.init\_elem{-}null}]} \quad & z ; (\mathsf{ref.null}~{\mathit{ht}})~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array.init\_elem}~x~y) &\hookrightarrow& \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}array.init\_elem{-}oob1}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array.init\_elem}~x~y) &\hookrightarrow& \multicolumn{2}{l@{}}{ \mathsf{trap} } \\ & \multicolumn{4}{@{}l@{}}{\qquad\quad \mbox{if}~i + n > {|z{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}|}} \\ -{[\textsc{\scriptsize E{-}array.init\_elem{-}oob2}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{array.init\_elem}~x~y) &\hookrightarrow& \multicolumn{2}{l@{}}{ \mathsf{trap} } \\ +{[\textsc{\scriptsize E{-}array.init\_elem{-}oob2}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array.init\_elem}~x~y) &\hookrightarrow& \multicolumn{2}{l@{}}{ \mathsf{trap} } \\ & \multicolumn{4}{@{}l@{}}{\qquad\quad \mbox{if}~j + n > {|z{.}\mathsf{elems}{}[y]{.}\mathsf{refs}|}} \\ -{[\textsc{\scriptsize E{-}array.init\_elem{-}zero}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{array.init\_elem}~x~y) &\hookrightarrow& \multicolumn{2}{l@{}}{ \epsilon } \\ +{[\textsc{\scriptsize E{-}array.init\_elem{-}zero}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array.init\_elem}~x~y) &\hookrightarrow& \multicolumn{2}{l@{}}{ \epsilon } \\ & \multicolumn{4}{@{}l@{}}{\qquad\quad \mbox{otherwise, if}~n = 0} \\ -{[\textsc{\scriptsize E{-}array.init\_elem{-}succ}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{array.init\_elem}~x~y) &\hookrightarrow& \\ - & \multicolumn{3}{@{}l@{}}{\qquad \begin{array}[t]{@{}l@{}} (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~{\mathit{ref}}~(\mathsf{array.set}~x) \\ (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i + 1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j + 1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n - 1)~(\mathsf{array.init\_elem}~x~y) \end{array} } \\ +{[\textsc{\scriptsize E{-}array.init\_elem{-}succ}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array.init\_elem}~x~y) &\hookrightarrow& \\ + & \multicolumn{3}{@{}l@{}}{\qquad \begin{array}[t]{@{}l@{}} (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{ref}}~(\mathsf{array.set}~x) \\ (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i + 1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j + 1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n - 1)~(\mathsf{array.init\_elem}~x~y) \end{array} } \\ & \multicolumn{4}{@{}l@{}}{\qquad\quad \mbox{otherwise, if}~{\mathit{ref}} = z{.}\mathsf{elems}{}[y]{.}\mathsf{refs}{}[j]} \\ \end{array} $$ @@ -7058,16 +7058,16 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}array.init\_data{-}null}]} \quad & z ; (\mathsf{ref.null}~{\mathit{ht}})~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{array.init\_data}~x~y) &\hookrightarrow& \mathsf{trap} \\ -{[\textsc{\scriptsize E{-}array.init\_data{-}oob1}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{array.init\_data}~x~y) &\hookrightarrow& \multicolumn{2}{l@{}}{ \mathsf{trap} } \\ +{[\textsc{\scriptsize E{-}array.init\_data{-}null}]} \quad & z ; (\mathsf{ref.null}~{\mathit{ht}})~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array.init\_data}~x~y) &\hookrightarrow& \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}array.init\_data{-}oob1}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array.init\_data}~x~y) &\hookrightarrow& \multicolumn{2}{l@{}}{ \mathsf{trap} } \\ & \multicolumn{4}{@{}l@{}}{\qquad\quad \mbox{if}~i + n > {|z{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}|}} \\ -{[\textsc{\scriptsize E{-}array.init\_data{-}oob2}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{array.init\_data}~x~y) &\hookrightarrow& \multicolumn{2}{l@{}}{ \mathsf{trap} } \\ +{[\textsc{\scriptsize E{-}array.init\_data{-}oob2}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array.init\_data}~x~y) &\hookrightarrow& \multicolumn{2}{l@{}}{ \mathsf{trap} } \\ & \multicolumn{4}{@{}l@{}}{\qquad\quad \mbox{if}~z{.}\mathsf{types}{}[x] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{zt}})} \\ & \multicolumn{4}{@{}l@{}}{\qquad\quad {\land}~j + n \cdot {|{\mathit{zt}}|} / 8 > {|z{.}\mathsf{datas}{}[y]{.}\mathsf{bytes}|}} \\ -{[\textsc{\scriptsize E{-}array.init\_data{-}zero}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{array.init\_data}~x~y) &\hookrightarrow& \multicolumn{2}{l@{}}{ \epsilon } \\ +{[\textsc{\scriptsize E{-}array.init\_data{-}zero}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array.init\_data}~x~y) &\hookrightarrow& \multicolumn{2}{l@{}}{ \epsilon } \\ & \multicolumn{4}{@{}l@{}}{\qquad\quad \mbox{otherwise, if}~n = 0} \\ -{[\textsc{\scriptsize E{-}array.init\_data{-}num}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{array.init\_data}~x~y) &\hookrightarrow& \\ - & \multicolumn{3}{@{}l@{}}{\qquad \begin{array}[t]{@{}l@{}} (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~({\mathrm{unpack}}({\mathit{zt}}){.}\mathsf{const}~{{\mathrm{unpack}}}_{{\mathit{zt}}}(c))~(\mathsf{array.set}~x) \\ (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i + 1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j + {|{\mathit{zt}}|} / 8)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n - 1)~(\mathsf{array.init\_data}~x~y) \end{array} } \\ +{[\textsc{\scriptsize E{-}array.init\_data{-}num}]} \quad & z ; (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array.init\_data}~x~y) &\hookrightarrow& \\ + & \multicolumn{3}{@{}l@{}}{\qquad \begin{array}[t]{@{}l@{}} (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~({\mathrm{unpack}}({\mathit{zt}}){.}\mathsf{const}~{{\mathrm{unpack}}}_{{\mathit{zt}}}(c))~(\mathsf{array.set}~x) \\ (\mathsf{ref.array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i + 1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j + {|{\mathit{zt}}|} / 8)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n - 1)~(\mathsf{array.init\_data}~x~y) \end{array} } \\ & \multicolumn{4}{@{}l@{}}{\qquad\quad \mbox{otherwise, if}~z{.}\mathsf{types}{}[x] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{zt}})} \\ & \multicolumn{4}{@{}l@{}}{\qquad\quad {\land}~{{\mathrm{bytes}}}_{{\mathit{zt}}}(c) = z{.}\mathsf{datas}{}[y]{.}\mathsf{bytes}{}[j : {|{\mathit{zt}}|} / 8]} \\ \end{array} @@ -7095,8 +7095,8 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}vvunop}]} \quad & (\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c_1)~(\mathsf{v{\scriptstyle128}} {.} {\mathit{vvunop}}) &\hookrightarrow& (\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c) - &\qquad \mbox{if}~c = {{\mathit{vvunop}}}{{}_{\mathsf{v{\scriptstyle128}}}}{(c_1)} \\ +{[\textsc{\scriptsize E{-}vvunop}]} \quad & (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c_1)~(\mathsf{v{\scriptstyle 128}} {.} {\mathit{vvunop}}) &\hookrightarrow& (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c) + &\qquad \mbox{if}~c = {{\mathit{vvunop}}}{{}_{\mathsf{v{\scriptstyle 128}}}}{(c_1)} \\ \end{array} $$ @@ -7104,8 +7104,8 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}vvbinop}]} \quad & (\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c_1)~(\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c_2)~(\mathsf{v{\scriptstyle128}} {.} {\mathit{vvbinop}}) &\hookrightarrow& (\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c) - &\qquad \mbox{if}~c = {{\mathit{vvbinop}}}{{}_{\mathsf{v{\scriptstyle128}}}}{(c_1,\, c_2)} \\ +{[\textsc{\scriptsize E{-}vvbinop}]} \quad & (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c_1)~(\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c_2)~(\mathsf{v{\scriptstyle 128}} {.} {\mathit{vvbinop}}) &\hookrightarrow& (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c) + &\qquad \mbox{if}~c = {{\mathit{vvbinop}}}{{}_{\mathsf{v{\scriptstyle 128}}}}{(c_1,\, c_2)} \\ \end{array} $$ @@ -7113,8 +7113,8 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}vvternop}]} \quad & (\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c_1)~(\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c_2)~(\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c_3)~(\mathsf{v{\scriptstyle128}} {.} {\mathit{vvternop}}) &\hookrightarrow& \multicolumn{2}{l@{}}{ (\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c) } \\ - &&& \multicolumn{2}{l@{}}{\quad \mbox{if}~c = {{\mathit{vvternop}}}{{}_{\mathsf{v{\scriptstyle128}}}}{(c_1,\, c_2,\, c_3)}} \\ +{[\textsc{\scriptsize E{-}vvternop}]} \quad & (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c_1)~(\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c_2)~(\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c_3)~(\mathsf{v{\scriptstyle 128}} {.} {\mathit{vvternop}}) &\hookrightarrow& \multicolumn{2}{l@{}}{ (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c) } \\ + &&& \multicolumn{2}{l@{}}{\quad \mbox{if}~c = {{\mathit{vvternop}}}{{}_{\mathsf{v{\scriptstyle 128}}}}{(c_1,\, c_2,\, c_3)}} \\ \end{array} $$ @@ -7122,8 +7122,8 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}vvtestop}]} \quad & (\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c_1)~(\mathsf{v{\scriptstyle128}} {.} \mathsf{any\_true}) &\hookrightarrow& (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~c) - &\qquad \mbox{if}~c = {{\mathrm{ine}}}_{{|\mathsf{v{\scriptstyle128}}|}}(c_1, 0) \\ +{[\textsc{\scriptsize E{-}vvtestop}]} \quad & (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c_1)~(\mathsf{v{\scriptstyle 128}} {.} \mathsf{any\_true}) &\hookrightarrow& (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~c) + &\qquad \mbox{if}~c = {{\mathrm{ine}}}_{{|\mathsf{v{\scriptstyle 128}}|}}(c_1, 0) \\ \end{array} $$ @@ -7131,7 +7131,7 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}vunop}]} \quad & (\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c_1)~({\mathit{sh}} {.} {\mathit{vunop}}) &\hookrightarrow& (\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c) +{[\textsc{\scriptsize E{-}vunop}]} \quad & (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c_1)~({\mathit{sh}} {.} {\mathit{vunop}}) &\hookrightarrow& (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c) &\qquad \mbox{if}~c = {{\mathit{vunop}}}{{}_{{\mathit{sh}}}}{(c_1)} \\ \end{array} $$ @@ -7140,9 +7140,9 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}vbinop{-}val}]} \quad & (\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c_1)~(\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c_2)~({\mathit{sh}} {.} {\mathit{vbinop}}) &\hookrightarrow& (\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c) +{[\textsc{\scriptsize E{-}vbinop{-}val}]} \quad & (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c_1)~(\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c_2)~({\mathit{sh}} {.} {\mathit{vbinop}}) &\hookrightarrow& (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c) &\qquad \mbox{if}~{{\mathit{vbinop}}}{{}_{{\mathit{sh}}}}{(c_1,\, c_2)} = c \\ -{[\textsc{\scriptsize E{-}vbinop{-}trap}]} \quad & (\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c_1)~(\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c_2)~({\mathit{sh}} {.} {\mathit{vbinop}}) &\hookrightarrow& \mathsf{trap} +{[\textsc{\scriptsize E{-}vbinop{-}trap}]} \quad & (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c_1)~(\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c_2)~({\mathit{sh}} {.} {\mathit{vbinop}}) &\hookrightarrow& \mathsf{trap} &\qquad \mbox{if}~{{\mathit{vbinop}}}{{}_{{\mathit{sh}}}}{(c_1,\, c_2)} = \epsilon \\ \end{array} $$ @@ -7151,10 +7151,10 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}vtestop{-}true}]} \quad & (\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c)~({{\mathsf{i}}{n}}{\mathsf{x}}{N} {.} \mathsf{all\_true}) &\hookrightarrow& (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~1) - &\qquad \mbox{if}~{{\mathit{ci}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}(c) \\ +{[\textsc{\scriptsize E{-}vtestop{-}true}]} \quad & (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c)~({{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}} {.} \mathsf{all\_true}) &\hookrightarrow& (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~1) + &\qquad \mbox{if}~{{\mathit{ci}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}(c) \\ &&&&\qquad {\land}~({\mathit{ci}}_1 \neq 0)^\ast \\ -{[\textsc{\scriptsize E{-}vtestop{-}false}]} \quad & (\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c)~({{\mathsf{i}}{n}}{\mathsf{x}}{N} {.} \mathsf{all\_true}) &\hookrightarrow& (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~0) +{[\textsc{\scriptsize E{-}vtestop{-}false}]} \quad & (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c)~({{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}} {.} \mathsf{all\_true}) &\hookrightarrow& (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~0) &\qquad \mbox{otherwise} \\ \end{array} $$ @@ -7163,7 +7163,7 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}vrelop}]} \quad & (\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c_1)~(\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c_2)~({\mathit{sh}} {.} {\mathit{vrelop}}) &\hookrightarrow& (\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c) +{[\textsc{\scriptsize E{-}vrelop}]} \quad & (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c_1)~(\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c_2)~({\mathit{sh}} {.} {\mathit{vrelop}}) &\hookrightarrow& (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c) &\qquad \mbox{if}~{{\mathit{vrelop}}}{{}_{{\mathit{sh}}}}{(c_1,\, c_2)} = c \\ \end{array} $$ @@ -7172,9 +7172,9 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}vshiftop}]} \quad & (\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c_1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~({{\mathsf{i}}{n}}{\mathsf{x}}{N} {.} {\mathit{vshiftop}}) &\hookrightarrow& (\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c) - &\qquad \mbox{if}~{{c'}^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}(c_1) \\ - &&&&\qquad {\land}~c = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{{\mathit{vshiftop}}}{{}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}}{({c'},\, n)}^\ast})} \\ +{[\textsc{\scriptsize E{-}vshiftop}]} \quad & (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c_1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~({{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}} {.} {\mathit{vshiftop}}) &\hookrightarrow& (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c) + &\qquad \mbox{if}~{{c'}^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}(c_1) \\ + &&&&\qquad {\land}~c = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{{\mathit{vshiftop}}}{{}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}}{({c'},\, n)}^\ast})} \\ \end{array} $$ @@ -7182,9 +7182,9 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}vbitmask}]} \quad & (\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c)~(({{\mathsf{i}}{n}}{\mathsf{x}}{N}){.}\mathsf{bitmask}) &\hookrightarrow& (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~{\mathit{ci}}) - &\qquad \mbox{if}~{{\mathit{ci}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}(c) \\ - &&&&\qquad {\land}~{{\mathrm{bits}}}_{{\mathsf{i}}{32}}({\mathit{ci}}) = {{{{{\mathrm{ilt}}}_{{|{\mathsf{i}}{n}|}}^{\mathsf{s}}}}{({\mathit{ci}}_1,\, 0)}^\ast} \\ +{[\textsc{\scriptsize E{-}vbitmask}]} \quad & (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c)~({{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}{.}\mathsf{bitmask}) &\hookrightarrow& (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~{\mathit{ci}}) + &\qquad \mbox{if}~{{\mathit{ci}}_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}(c) \\ + &&&&\qquad {\land}~{{\mathrm{bits}}}_{{\mathsf{i}}{32}}({\mathit{ci}}) = {{{{{\mathrm{ilt}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}^{\mathsf{s}}}}{({\mathit{ci}}_1,\, 0)}^\ast} \\ \end{array} $$ @@ -7192,10 +7192,10 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}vswizzle}]} \quad & (\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c_1)~(\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c_2)~(({{\mathsf{i}}{n}}{\mathsf{x}}{N}){.}\mathsf{swizzle}) &\hookrightarrow& (\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~{c'}) - &\qquad \mbox{if}~{{\mathit{ci}}^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}(c_2) \\ - &&&&\qquad {\land}~{c^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}(c_1)~{0^{256 - N}} \\ - &&&&\qquad {\land}~{c'} = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{N}}^{{-1}}}}{({{c^\ast}{}[{{\mathit{ci}}^\ast}{}[k]]^{k {|z{.}\mathsf{tables}{}[x]{.}\mathsf{refs}|} \\ -{[\textsc{\scriptsize E{-}table.fill{-}zero}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{table.fill}~x) &\hookrightarrow& \epsilon +{[\textsc{\scriptsize E{-}table.fill{-}zero}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{table.fill}~x) &\hookrightarrow& \epsilon &\qquad \mbox{otherwise, if}~n = 0 \\ -{[\textsc{\scriptsize E{-}table.fill{-}succ}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{table.fill}~x) &\hookrightarrow& \\ - & \multicolumn{3}{@{}l@{}}{\qquad \begin{array}[t]{@{}l@{}} (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{table.set}~x) \\ (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i + 1)~{\mathit{val}}~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n - 1)~(\mathsf{table.fill}~x) \end{array} } +{[\textsc{\scriptsize E{-}table.fill{-}succ}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{table.fill}~x) &\hookrightarrow& \\ + & \multicolumn{3}{@{}l@{}}{\qquad \begin{array}[t]{@{}l@{}} (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{table.set}~x) \\ (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i + 1)~{\mathit{val}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n - 1)~(\mathsf{table.fill}~x) \end{array} } &\qquad \mbox{otherwise} \\ \end{array} $$ @@ -7378,15 +7378,15 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}table.copy{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{table.copy}~x~y) &\hookrightarrow& \multicolumn{2}{l@{}}{ \mathsf{trap} } \\ +{[\textsc{\scriptsize E{-}table.copy{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{table.copy}~x~y) &\hookrightarrow& \multicolumn{2}{l@{}}{ \mathsf{trap} } \\ & \multicolumn{4}{@{}l@{}}{\qquad\quad \mbox{if}~i + n > {|z{.}\mathsf{tables}{}[y]{.}\mathsf{refs}|} \lor j + n > {|z{.}\mathsf{tables}{}[x]{.}\mathsf{refs}|}} \\ -{[\textsc{\scriptsize E{-}table.copy{-}zero}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{table.copy}~x~y) &\hookrightarrow& \epsilon +{[\textsc{\scriptsize E{-}table.copy{-}zero}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{table.copy}~x~y) &\hookrightarrow& \epsilon &\qquad \mbox{otherwise, if}~n = 0 \\ -{[\textsc{\scriptsize E{-}table.copy{-}le}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{table.copy}~x~y) &\hookrightarrow& \\ - & \multicolumn{3}{@{}l@{}}{\qquad \begin{array}[t]{@{}l@{}} (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{table.get}~y)~(\mathsf{table.set}~x) \\ (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j + 1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i + 1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n - 1)~(\mathsf{table.copy}~x~y) \end{array} } +{[\textsc{\scriptsize E{-}table.copy{-}le}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{table.copy}~x~y) &\hookrightarrow& \\ + & \multicolumn{3}{@{}l@{}}{\qquad \begin{array}[t]{@{}l@{}} (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{table.get}~y)~(\mathsf{table.set}~x) \\ (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j + 1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i + 1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n - 1)~(\mathsf{table.copy}~x~y) \end{array} } &\qquad \mbox{otherwise, if}~j \leq i \\ -{[\textsc{\scriptsize E{-}table.copy{-}gt}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{table.copy}~x~y) &\hookrightarrow& \\ - & \multicolumn{3}{@{}l@{}}{\qquad \begin{array}[t]{@{}l@{}} (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j + n - 1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i + n - 1)~(\mathsf{table.get}~y)~(\mathsf{table.set}~x) \\ (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n - 1)~(\mathsf{table.copy}~x~y) \end{array} } +{[\textsc{\scriptsize E{-}table.copy{-}gt}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{table.copy}~x~y) &\hookrightarrow& \\ + & \multicolumn{3}{@{}l@{}}{\qquad \begin{array}[t]{@{}l@{}} (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j + n - 1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i + n - 1)~(\mathsf{table.get}~y)~(\mathsf{table.set}~x) \\ (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n - 1)~(\mathsf{table.copy}~x~y) \end{array} } &\qquad \mbox{otherwise} \\ \end{array} $$ @@ -7395,12 +7395,12 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}table.init{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{table.init}~x~y) &\hookrightarrow& \multicolumn{2}{l@{}}{ \mathsf{trap} } \\ +{[\textsc{\scriptsize E{-}table.init{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{table.init}~x~y) &\hookrightarrow& \multicolumn{2}{l@{}}{ \mathsf{trap} } \\ & \multicolumn{4}{@{}l@{}}{\qquad\quad \mbox{if}~i + n > {|z{.}\mathsf{elems}{}[y]{.}\mathsf{refs}|} \lor j + n > {|z{.}\mathsf{tables}{}[x]{.}\mathsf{refs}|}} \\ -{[\textsc{\scriptsize E{-}table.init{-}zero}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{table.init}~x~y) &\hookrightarrow& \epsilon +{[\textsc{\scriptsize E{-}table.init{-}zero}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{table.init}~x~y) &\hookrightarrow& \epsilon &\qquad \mbox{otherwise, if}~n = 0 \\ -{[\textsc{\scriptsize E{-}table.init{-}succ}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{table.init}~x~y) &\hookrightarrow& \\ - & \multicolumn{3}{@{}l@{}}{\qquad \begin{array}[t]{@{}l@{}} (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j)~z{.}\mathsf{elems}{}[y]{.}\mathsf{refs}{}[i]~(\mathsf{table.set}~x) \\ (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j + 1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i + 1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n - 1)~(\mathsf{table.init}~x~y) \end{array} } +{[\textsc{\scriptsize E{-}table.init{-}succ}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{table.init}~x~y) &\hookrightarrow& \\ + & \multicolumn{3}{@{}l@{}}{\qquad \begin{array}[t]{@{}l@{}} (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~z{.}\mathsf{elems}{}[y]{.}\mathsf{refs}{}[i]~(\mathsf{table.set}~x) \\ (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j + 1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i + 1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n - 1)~(\mathsf{table.init}~x~y) \end{array} } &\qquad \mbox{otherwise} \\ \end{array} $$ @@ -7417,18 +7417,18 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}load{-}num{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~({\mathit{nt}}{.}\mathsf{load}~x~{\mathit{ao}}) &\hookrightarrow& \multicolumn{2}{l@{}}{ \mathsf{trap} } \\ +{[\textsc{\scriptsize E{-}load{-}num{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~({\mathit{nt}}{.}\mathsf{load}~x~{\mathit{ao}}) &\hookrightarrow& \multicolumn{2}{l@{}}{ \mathsf{trap} } \\ &&& \multicolumn{2}{l@{}}{\quad \mbox{if}~i + {\mathit{ao}}{.}\mathsf{offset} + {|{\mathit{nt}}|} / 8 > {|z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}|}} \\ -{[\textsc{\scriptsize E{-}load{-}num{-}val}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~({\mathit{nt}}{.}\mathsf{load}~x~{\mathit{ao}}) &\hookrightarrow& \multicolumn{2}{l@{}}{ ({\mathit{nt}}{.}\mathsf{const}~c) } \\ +{[\textsc{\scriptsize E{-}load{-}num{-}val}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~({\mathit{nt}}{.}\mathsf{load}~x~{\mathit{ao}}) &\hookrightarrow& \multicolumn{2}{l@{}}{ ({\mathit{nt}}{.}\mathsf{const}~c) } \\ &&& \multicolumn{2}{l@{}}{\quad \mbox{if}~{{\mathrm{bytes}}}_{{\mathit{nt}}}(c) = z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : {|{\mathit{nt}}|} / 8]} \\ -{[\textsc{\scriptsize E{-}load{-}pack{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~({{\mathsf{i}}{n}{.}\mathsf{load}}{{n}{\mathsf{\_}}{{\mathit{sx}}}}~x~{\mathit{ao}}) &\hookrightarrow& \multicolumn{2}{l@{}}{ \mathsf{trap} } \\ +{[\textsc{\scriptsize E{-}load{-}pack{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~({{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}{.}\mathsf{load}}{{n}{\mathsf{\_}}{{\mathit{sx}}}}~x~{\mathit{ao}}) &\hookrightarrow& \multicolumn{2}{l@{}}{ \mathsf{trap} } \\ &&& \multicolumn{2}{l@{}}{\quad \mbox{if}~i + {\mathit{ao}}{.}\mathsf{offset} + n / 8 > {|z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}|}} \\ -{[\textsc{\scriptsize E{-}load{-}pack{-}val}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~({{\mathsf{i}}{n}{.}\mathsf{load}}{{n}{\mathsf{\_}}{{\mathit{sx}}}}~x~{\mathit{ao}}) &\hookrightarrow& \multicolumn{2}{l@{}}{ ({\mathsf{i}}{n}{.}\mathsf{const}~{{{{\mathrm{ext}}}_{n, {|{\mathsf{i}}{n}|}}^{{\mathit{sx}}}}}{(c)}) } \\ +{[\textsc{\scriptsize E{-}load{-}pack{-}val}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~({{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}{.}\mathsf{load}}{{n}{\mathsf{\_}}{{\mathit{sx}}}}~x~{\mathit{ao}}) &\hookrightarrow& \multicolumn{2}{l@{}}{ ({\mathsf{i}}{{\mathit{{\scriptstyle N}}}}{.}\mathsf{const}~{{{{\mathrm{ext}}}_{n, {|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}^{{\mathit{sx}}}}}{(c)}) } \\ &&& \multicolumn{2}{l@{}}{\quad \mbox{if}~{{\mathrm{bytes}}}_{{\mathsf{i}}{n}}(c) = z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : n / 8]} \\ -{[\textsc{\scriptsize E{-}vload{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{v{\scriptstyle128}}{.}\mathsf{load}~x~{\mathit{ao}}) &\hookrightarrow& \mathsf{trap} - &\qquad \mbox{if}~i + {\mathit{ao}}{.}\mathsf{offset} + {|\mathsf{v{\scriptstyle128}}|} / 8 > {|z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}|} \\ -{[\textsc{\scriptsize E{-}vload{-}val}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{v{\scriptstyle128}}{.}\mathsf{load}~x~{\mathit{ao}}) &\hookrightarrow& (\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c) - &\qquad \mbox{if}~{{\mathrm{bytes}}}_{\mathsf{v{\scriptstyle128}}}(c) = z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : {|\mathsf{v{\scriptstyle128}}|} / 8] \\ +{[\textsc{\scriptsize E{-}vload{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}~x~{\mathit{ao}}) &\hookrightarrow& \mathsf{trap} + &\qquad \mbox{if}~i + {\mathit{ao}}{.}\mathsf{offset} + {|\mathsf{v{\scriptstyle 128}}|} / 8 > {|z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}|} \\ +{[\textsc{\scriptsize E{-}vload{-}val}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}~x~{\mathit{ao}}) &\hookrightarrow& (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c) + &\qquad \mbox{if}~{{\mathrm{bytes}}}_{\mathsf{v{\scriptstyle 128}}}(c) = z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : {|\mathsf{v{\scriptstyle 128}}|} / 8] \\ \end{array} $$ @@ -7436,12 +7436,12 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}vload{-}shape{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~({\mathsf{v{\scriptstyle128}}{.}\mathsf{load}}{{\mathsf{shape}}{M}{\mathsf{x}}{N}{{\mathit{sx}}}}~x~{\mathit{ao}}) &\hookrightarrow& \mathsf{trap} - &\qquad \mbox{if}~i + {\mathit{ao}}{.}\mathsf{offset} + M \cdot N / 8 > {|z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}|} \\ -{[\textsc{\scriptsize E{-}vload{-}shape{-}val}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~({\mathsf{v{\scriptstyle128}}{.}\mathsf{load}}{{\mathsf{shape}}{M}{\mathsf{x}}{N}{{\mathit{sx}}}}~x~{\mathit{ao}}) &\hookrightarrow& (\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c) - &\qquad \mbox{if}~({{\mathrm{bytes}}}_{{\mathsf{i}}{M}}(j) = z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} + k \cdot M / 8 : M / 8])^{k {|z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}|} \\ +{[\textsc{\scriptsize E{-}vload{-}shape{-}val}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~({\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{{\mathit{{\scriptstyle M}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}{\mathsf{\_}}{{\mathit{sx}}}}~x~{\mathit{ao}}) &\hookrightarrow& (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c) + &\qquad \mbox{if}~({{\mathrm{bytes}}}_{{\mathsf{i}}{{\mathit{{\scriptstyle M}}}}}(j) = z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} + k \cdot {\mathit{{\scriptstyle M}}} / 8 : {\mathit{{\scriptstyle M}}} / 8])^{k<{\mathit{{\scriptstyle N}}}} \\ + &&&&\qquad {\land}~{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|} = {\mathit{{\scriptstyle M}}} \cdot 2 \\ + &&&&\qquad {\land}~c = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle N}}}}}^{{-1}}}}{({{{{{\mathrm{ext}}}_{{\mathit{{\scriptstyle M}}}, {|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}}^{{\mathit{sx}}}}}{(j)}^{{\mathit{{\scriptstyle N}}}}})} \\ \end{array} $$ @@ -7449,13 +7449,13 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}vload{-}splat{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~({\mathsf{v{\scriptstyle128}}{.}\mathsf{load}}{{\mathsf{splat}}{N}}~x~{\mathit{ao}}) &\hookrightarrow& \mathsf{trap} - &\qquad \mbox{if}~i + {\mathit{ao}}{.}\mathsf{offset} + N / 8 > {|z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}|} \\ -{[\textsc{\scriptsize E{-}vload{-}splat{-}val}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~({\mathsf{v{\scriptstyle128}}{.}\mathsf{load}}{{\mathsf{splat}}{N}}~x~{\mathit{ao}}) &\hookrightarrow& (\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c) - &\qquad \mbox{if}~{{\mathrm{bytes}}}_{{\mathsf{i}}{N}}(j) = z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : N / 8] \\ - &&&&\qquad {\land}~N = {|{\mathsf{i}}{n}|} \\ - &&&&\qquad {\land}~M = 128 / N \\ - &&&&\qquad {\land}~c = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{M}}^{{-1}}}}{({j^{M}})} \\ +{[\textsc{\scriptsize E{-}vload{-}splat{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~({\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{{\mathit{{\scriptstyle N}}}}{\mathsf{\_}}{\mathsf{splat}}}~x~{\mathit{ao}}) &\hookrightarrow& \mathsf{trap} + &\qquad \mbox{if}~i + {\mathit{ao}}{.}\mathsf{offset} + {\mathit{{\scriptstyle N}}} / 8 > {|z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}|} \\ +{[\textsc{\scriptsize E{-}vload{-}splat{-}val}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~({\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{{\mathit{{\scriptstyle N}}}}{\mathsf{\_}}{\mathsf{splat}}}~x~{\mathit{ao}}) &\hookrightarrow& (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c) + &\qquad \mbox{if}~{{\mathrm{bytes}}}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}(j) = z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : {\mathit{{\scriptstyle N}}} / 8] \\ + &&&&\qquad {\land}~{\mathit{{\scriptstyle N}}} = {|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|} \\ + &&&&\qquad {\land}~{\mathit{{\scriptstyle M}}} = 128 / {\mathit{{\scriptstyle N}}} \\ + &&&&\qquad {\land}~c = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle M}}}}}^{{-1}}}}{({j^{{\mathit{{\scriptstyle M}}}}})} \\ \end{array} $$ @@ -7463,11 +7463,11 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}vload{-}zero{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~({\mathsf{v{\scriptstyle128}}{.}\mathsf{load}}{{\mathsf{zero}}{N}}~x~{\mathit{ao}}) &\hookrightarrow& \mathsf{trap} - &\qquad \mbox{if}~i + {\mathit{ao}}{.}\mathsf{offset} + N / 8 > {|z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}|} \\ -{[\textsc{\scriptsize E{-}vload{-}zero{-}val}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~({\mathsf{v{\scriptstyle128}}{.}\mathsf{load}}{{\mathsf{zero}}{N}}~x~{\mathit{ao}}) &\hookrightarrow& (\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c) - &\qquad \mbox{if}~{{\mathrm{bytes}}}_{{\mathsf{i}}{N}}(j) = z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : N / 8] \\ - &&&&\qquad {\land}~c = {{{{\mathrm{ext}}}_{N, 128}^{\mathsf{u}}}}{(j)} \\ +{[\textsc{\scriptsize E{-}vload{-}zero{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~({\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{{\mathit{{\scriptstyle N}}}}{\mathsf{\_}}{\mathsf{zero}}}~x~{\mathit{ao}}) &\hookrightarrow& \mathsf{trap} + &\qquad \mbox{if}~i + {\mathit{ao}}{.}\mathsf{offset} + {\mathit{{\scriptstyle N}}} / 8 > {|z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}|} \\ +{[\textsc{\scriptsize E{-}vload{-}zero{-}val}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~({\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{{\mathit{{\scriptstyle N}}}}{\mathsf{\_}}{\mathsf{zero}}}~x~{\mathit{ao}}) &\hookrightarrow& (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c) + &\qquad \mbox{if}~{{\mathrm{bytes}}}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}(j) = z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : {\mathit{{\scriptstyle N}}} / 8] \\ + &&&&\qquad {\land}~c = {{{{\mathrm{ext}}}_{{\mathit{{\scriptstyle N}}}, 128}^{\mathsf{u}}}}{(j)} \\ \end{array} $$ @@ -7475,13 +7475,13 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}vload\_lane{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c_1)~({\mathsf{v{\scriptstyle128}}{.}\mathsf{load}}{N}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{ao}}~j) &\hookrightarrow& \mathsf{trap} - &\qquad \mbox{if}~i + {\mathit{ao}}{.}\mathsf{offset} + N / 8 > {|z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}|} \\ -{[\textsc{\scriptsize E{-}vload\_lane{-}val}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c_1)~({\mathsf{v{\scriptstyle128}}{.}\mathsf{load}}{N}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{ao}}~j) &\hookrightarrow& (\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c) - &\qquad \mbox{if}~{{\mathrm{bytes}}}_{{\mathsf{i}}{N}}(k) = z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : N / 8] \\ - &&&&\qquad {\land}~N = {|{\mathsf{i}}{n}|} \\ - &&&&\qquad {\land}~M = {|\mathsf{v{\scriptstyle128}}|} / N \\ - &&&&\qquad {\land}~c = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{M}}^{{-1}}}}{({{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{M}}(c_1){}[{}[j] = k])} \\ +{[\textsc{\scriptsize E{-}vload\_lane{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c_1)~({\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{\mathit{{\scriptstyle N}}}}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{ao}}~j) &\hookrightarrow& \mathsf{trap} + &\qquad \mbox{if}~i + {\mathit{ao}}{.}\mathsf{offset} + {\mathit{{\scriptstyle N}}} / 8 > {|z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}|} \\ +{[\textsc{\scriptsize E{-}vload\_lane{-}val}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c_1)~({\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{\mathit{{\scriptstyle N}}}}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{ao}}~j) &\hookrightarrow& (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c) + &\qquad \mbox{if}~{{\mathrm{bytes}}}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}(k) = z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : {\mathit{{\scriptstyle N}}} / 8] \\ + &&&&\qquad {\land}~{\mathit{{\scriptstyle N}}} = {|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|} \\ + &&&&\qquad {\land}~{\mathit{{\scriptstyle M}}} = {|\mathsf{v{\scriptstyle 128}}|} / {\mathit{{\scriptstyle N}}} \\ + &&&&\qquad {\land}~c = {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle M}}}}}^{{-1}}}}{({{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle M}}}}}(c_1){}[{}[j] = k])} \\ \end{array} $$ @@ -7489,18 +7489,18 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}store{-}num{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~({\mathit{nt}}{.}\mathsf{const}~c)~({\mathit{nt}}{.}\mathsf{store}~x~{\mathit{ao}}) &\hookrightarrow& \multicolumn{2}{l@{}}{ z ; \mathsf{trap} } \\ +{[\textsc{\scriptsize E{-}store{-}num{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~({\mathit{nt}}{.}\mathsf{const}~c)~({\mathit{nt}}{.}\mathsf{store}~x~{\mathit{ao}}) &\hookrightarrow& \multicolumn{2}{l@{}}{ z ; \mathsf{trap} } \\ &&& \multicolumn{2}{l@{}}{\quad \mbox{if}~i + {\mathit{ao}}{.}\mathsf{offset} + {|{\mathit{nt}}|} / 8 > {|z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}|}} \\ -{[\textsc{\scriptsize E{-}store{-}num{-}val}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~({\mathit{nt}}{.}\mathsf{const}~c)~({\mathit{nt}}{.}\mathsf{store}~x~{\mathit{ao}}) &\hookrightarrow& \multicolumn{2}{l@{}}{ z{}[\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : {|{\mathit{nt}}|} / 8] = {b^\ast}] ; \epsilon } \\ +{[\textsc{\scriptsize E{-}store{-}num{-}val}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~({\mathit{nt}}{.}\mathsf{const}~c)~({\mathit{nt}}{.}\mathsf{store}~x~{\mathit{ao}}) &\hookrightarrow& \multicolumn{2}{l@{}}{ z{}[\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : {|{\mathit{nt}}|} / 8] = {b^\ast}] ; \epsilon } \\ &&& \multicolumn{2}{l@{}}{\quad \mbox{if}~{b^\ast} = {{\mathrm{bytes}}}_{{\mathit{nt}}}(c)} \\ -{[\textsc{\scriptsize E{-}store{-}pack{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~({\mathsf{i}}{n}{.}\mathsf{const}~c)~({{\mathit{nt}}{.}\mathsf{store}}{n}~x~{\mathit{ao}}) &\hookrightarrow& \multicolumn{2}{l@{}}{ z ; \mathsf{trap} } \\ +{[\textsc{\scriptsize E{-}store{-}pack{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~({\mathsf{i}}{{\mathit{{\scriptstyle N}}}}{.}\mathsf{const}~c)~({{\mathit{nt}}{.}\mathsf{store}}{n}~x~{\mathit{ao}}) &\hookrightarrow& \multicolumn{2}{l@{}}{ z ; \mathsf{trap} } \\ &&& \multicolumn{2}{l@{}}{\quad \mbox{if}~i + {\mathit{ao}}{.}\mathsf{offset} + n / 8 > {|z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}|}} \\ -{[\textsc{\scriptsize E{-}store{-}pack{-}val}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~({\mathsf{i}}{n}{.}\mathsf{const}~c)~({{\mathit{nt}}{.}\mathsf{store}}{n}~x~{\mathit{ao}}) &\hookrightarrow& \multicolumn{2}{l@{}}{ z{}[\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : n / 8] = {b^\ast}] ; \epsilon } \\ - &&& \multicolumn{2}{l@{}}{\quad \mbox{if}~{b^\ast} = {{\mathrm{bytes}}}_{{\mathsf{i}}{n}}({{{\mathrm{wrap}}}_{{|{\mathsf{i}}{n}|}, n}}{(c)})} \\ -{[\textsc{\scriptsize E{-}vstore{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c)~(\mathsf{v{\scriptstyle128}}{.}\mathsf{store}~x~{\mathit{ao}}) &\hookrightarrow& z ; \mathsf{trap} - &\qquad \mbox{if}~i + {\mathit{ao}}{.}\mathsf{offset} + {|\mathsf{v{\scriptstyle128}}|} / 8 > {|z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}|} \\ -{[\textsc{\scriptsize E{-}vstore{-}val}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c)~(\mathsf{v{\scriptstyle128}}{.}\mathsf{store}~x~{\mathit{ao}}) &\hookrightarrow& z{}[\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : {|\mathsf{v{\scriptstyle128}}|} / 8] = {b^\ast}] ; \epsilon - &\qquad \mbox{if}~{b^\ast} = {{\mathrm{bytes}}}_{\mathsf{v{\scriptstyle128}}}(c) \\ +{[\textsc{\scriptsize E{-}store{-}pack{-}val}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~({\mathsf{i}}{{\mathit{{\scriptstyle N}}}}{.}\mathsf{const}~c)~({{\mathit{nt}}{.}\mathsf{store}}{n}~x~{\mathit{ao}}) &\hookrightarrow& \multicolumn{2}{l@{}}{ z{}[\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : n / 8] = {b^\ast}] ; \epsilon } \\ + &&& \multicolumn{2}{l@{}}{\quad \mbox{if}~{b^\ast} = {{\mathrm{bytes}}}_{{\mathsf{i}}{n}}({{{\mathrm{wrap}}}_{{|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|}, n}}{(c)})} \\ +{[\textsc{\scriptsize E{-}vstore{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c)~(\mathsf{v{\scriptstyle 128}}{.}\mathsf{store}~x~{\mathit{ao}}) &\hookrightarrow& z ; \mathsf{trap} + &\qquad \mbox{if}~i + {\mathit{ao}}{.}\mathsf{offset} + {|\mathsf{v{\scriptstyle 128}}|} / 8 > {|z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}|} \\ +{[\textsc{\scriptsize E{-}vstore{-}val}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c)~(\mathsf{v{\scriptstyle 128}}{.}\mathsf{store}~x~{\mathit{ao}}) &\hookrightarrow& z{}[\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : {|\mathsf{v{\scriptstyle 128}}|} / 8] = {b^\ast}] ; \epsilon + &\qquad \mbox{if}~{b^\ast} = {{\mathrm{bytes}}}_{\mathsf{v{\scriptstyle 128}}}(c) \\ \end{array} $$ @@ -7508,12 +7508,12 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}vstore\_lane{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c)~({\mathsf{v{\scriptstyle128}}{.}\mathsf{store}}{N}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{ao}}~j) &\hookrightarrow& z ; \mathsf{trap} - &\qquad \mbox{if}~i + {\mathit{ao}}{.}\mathsf{offset} + N > {|z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}|} \\ -{[\textsc{\scriptsize E{-}vstore\_lane{-}val}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~c)~({\mathsf{v{\scriptstyle128}}{.}\mathsf{store}}{N}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{ao}}~j) &\hookrightarrow& z{}[\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : N / 8] = {b^\ast}] ; \epsilon - &\qquad \mbox{if}~N = {|{\mathsf{i}}{n}|} \\ - &&&&\qquad {\land}~M = 128 / N \\ - &&&&\qquad {\land}~{b^\ast} = {{\mathrm{bytes}}}_{{\mathsf{i}}{N}}({{\mathrm{lanes}}}_{{{\mathsf{i}}{n}}{\mathsf{x}}{M}}(c){}[j]) \\ +{[\textsc{\scriptsize E{-}vstore\_lane{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c)~({\mathsf{v{\scriptstyle 128}}{.}\mathsf{store}}{{\mathit{{\scriptstyle N}}}}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{ao}}~j) &\hookrightarrow& z ; \mathsf{trap} + &\qquad \mbox{if}~i + {\mathit{ao}}{.}\mathsf{offset} + {\mathit{{\scriptstyle N}}} > {|z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}|} \\ +{[\textsc{\scriptsize E{-}vstore\_lane{-}val}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c)~({\mathsf{v{\scriptstyle 128}}{.}\mathsf{store}}{{\mathit{{\scriptstyle N}}}}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{ao}}~j) &\hookrightarrow& z{}[\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : {\mathit{{\scriptstyle N}}} / 8] = {b^\ast}] ; \epsilon + &\qquad \mbox{if}~{\mathit{{\scriptstyle N}}} = {|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|} \\ + &&&&\qquad {\land}~{\mathit{{\scriptstyle M}}} = 128 / {\mathit{{\scriptstyle N}}} \\ + &&&&\qquad {\land}~{b^\ast} = {{\mathrm{bytes}}}_{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}({{\mathrm{lanes}}}_{{{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}}{\mathsf{x}}{{\mathit{{\scriptstyle M}}}}}(c){}[j]) \\ \end{array} $$ @@ -7521,8 +7521,8 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}memory.size}]} \quad & z ; (\mathsf{memory.size}~x) &\hookrightarrow& (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n) - &\qquad \mbox{if}~n \cdot 64 \, {\mathrm{Ki}} = {|z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}|} \\ +{[\textsc{\scriptsize E{-}memory.size}]} \quad & z ; (\mathsf{memory.size}~x) &\hookrightarrow& (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n) + &\qquad \mbox{if}~n \cdot 64 \, {\mathrm{{\scriptstyle K}i}} = {|z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}|} \\ \end{array} $$ @@ -7530,9 +7530,9 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}memory.grow{-}succeed}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{memory.grow}~x) &\hookrightarrow& \multicolumn{2}{l@{}}{ z{}[\mathsf{mems}{}[x] = {\mathit{mi}}] ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~{|z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}|} / 64 \, {\mathrm{Ki}}) } \\ +{[\textsc{\scriptsize E{-}memory.grow{-}succeed}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{memory.grow}~x) &\hookrightarrow& \multicolumn{2}{l@{}}{ z{}[\mathsf{mems}{}[x] = {\mathit{mi}}] ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~{|z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}|} / 64 \, {\mathrm{{\scriptstyle K}i}}) } \\ &&& \multicolumn{2}{l@{}}{\quad \mbox{if}~{\mathit{mi}} = {\mathrm{growmem}}(z{.}\mathsf{mems}{}[x], n)} \\ -{[\textsc{\scriptsize E{-}memory.grow{-}fail}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{memory.grow}~x) &\hookrightarrow& z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~{{{{\mathrm{signed}}}_{32}^{{-1}}}}{({-1})}) \\ +{[\textsc{\scriptsize E{-}memory.grow{-}fail}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{memory.grow}~x) &\hookrightarrow& z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~{{{{\mathrm{signed}}}_{32}^{{-1}}}}{({-1})}) \\ \end{array} $$ @@ -7540,12 +7540,12 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}memory.fill{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{memory.fill}~x) &\hookrightarrow& \mathsf{trap} +{[\textsc{\scriptsize E{-}memory.fill{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{memory.fill}~x) &\hookrightarrow& \mathsf{trap} &\qquad \mbox{if}~i + n > {|z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}|} \\ -{[\textsc{\scriptsize E{-}memory.fill{-}zero}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{memory.fill}~x) &\hookrightarrow& \epsilon +{[\textsc{\scriptsize E{-}memory.fill{-}zero}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{memory.fill}~x) &\hookrightarrow& \epsilon &\qquad \mbox{otherwise, if}~n = 0 \\ -{[\textsc{\scriptsize E{-}memory.fill{-}succ}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{memory.fill}~x) &\hookrightarrow& \\ - & \multicolumn{3}{@{}l@{}}{\qquad \begin{array}[t]{@{}l@{}} (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~{\mathit{val}}~({\mathsf{i{\scriptstyle32}}{.}\mathsf{store}}{8}~x) \\ (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i + 1)~{\mathit{val}}~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n - 1)~(\mathsf{memory.fill}~x) \end{array} } +{[\textsc{\scriptsize E{-}memory.fill{-}succ}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{memory.fill}~x) &\hookrightarrow& \\ + & \multicolumn{3}{@{}l@{}}{\qquad \begin{array}[t]{@{}l@{}} (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~({\mathsf{i{\scriptstyle 32}}{.}\mathsf{store}}{8}~x) \\ (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i + 1)~{\mathit{val}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n - 1)~(\mathsf{memory.fill}~x) \end{array} } &\qquad \mbox{otherwise} \\ \end{array} $$ @@ -7554,15 +7554,15 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}memory.copy{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{memory.copy}~x_1~x_2) &\hookrightarrow& \multicolumn{2}{l@{}}{ \mathsf{trap} } \\ +{[\textsc{\scriptsize E{-}memory.copy{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{memory.copy}~x_1~x_2) &\hookrightarrow& \multicolumn{2}{l@{}}{ \mathsf{trap} } \\ & \multicolumn{4}{@{}l@{}}{\qquad\quad \mbox{if}~i_1 + n > {|z{.}\mathsf{mems}{}[x_1]{.}\mathsf{bytes}|} \lor i_2 + n > {|z{.}\mathsf{mems}{}[x_2]{.}\mathsf{bytes}|}} \\ -{[\textsc{\scriptsize E{-}memory.copy{-}zero}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{memory.copy}~x_1~x_2) &\hookrightarrow& \epsilon +{[\textsc{\scriptsize E{-}memory.copy{-}zero}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{memory.copy}~x_1~x_2) &\hookrightarrow& \epsilon &\qquad \mbox{otherwise, if}~n = 0 \\ -{[\textsc{\scriptsize E{-}memory.copy{-}le}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{memory.copy}~x_1~x_2) &\hookrightarrow& \\ - & \multicolumn{3}{@{}l@{}}{\qquad \begin{array}[t]{@{}l@{}} (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_2)~({\mathsf{i{\scriptstyle32}}{.}\mathsf{load}}{{8}{\mathsf{\_}}{\mathsf{u}}}~x_2)~({\mathsf{i{\scriptstyle32}}{.}\mathsf{store}}{8}~x_1) \\ (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_1 + 1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_2 + 1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n - 1)~(\mathsf{memory.copy}~x_1~x_2) \end{array} } +{[\textsc{\scriptsize E{-}memory.copy{-}le}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{memory.copy}~x_1~x_2) &\hookrightarrow& \\ + & \multicolumn{3}{@{}l@{}}{\qquad \begin{array}[t]{@{}l@{}} (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_2)~({\mathsf{i{\scriptstyle 32}}{.}\mathsf{load}}{{8}{\mathsf{\_}}{\mathsf{u}}}~x_2)~({\mathsf{i{\scriptstyle 32}}{.}\mathsf{store}}{8}~x_1) \\ (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_1 + 1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_2 + 1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n - 1)~(\mathsf{memory.copy}~x_1~x_2) \end{array} } &\qquad \mbox{otherwise, if}~i_1 \leq i_2 \\ -{[\textsc{\scriptsize E{-}memory.copy{-}gt}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{memory.copy}~x_1~x_2) &\hookrightarrow& \\ - & \multicolumn{3}{@{}l@{}}{\qquad \begin{array}[t]{@{}l@{}} (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_1 + n - 1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_2 + n - 1)~({\mathsf{i{\scriptstyle32}}{.}\mathsf{load}}{{8}{\mathsf{\_}}{\mathsf{u}}}~x_2)~({\mathsf{i{\scriptstyle32}}{.}\mathsf{store}}{8}~x_1) \\ (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n - 1)~(\mathsf{memory.copy}~x_1~x_2) \end{array} } +{[\textsc{\scriptsize E{-}memory.copy{-}gt}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{memory.copy}~x_1~x_2) &\hookrightarrow& \\ + & \multicolumn{3}{@{}l@{}}{\qquad \begin{array}[t]{@{}l@{}} (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_1 + n - 1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_2 + n - 1)~({\mathsf{i{\scriptstyle 32}}{.}\mathsf{load}}{{8}{\mathsf{\_}}{\mathsf{u}}}~x_2)~({\mathsf{i{\scriptstyle 32}}{.}\mathsf{store}}{8}~x_1) \\ (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n - 1)~(\mathsf{memory.copy}~x_1~x_2) \end{array} } &\qquad \mbox{otherwise} \\ \end{array} $$ @@ -7571,12 +7571,12 @@ $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}memory.init{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{memory.init}~x~y) &\hookrightarrow& \multicolumn{2}{l@{}}{ \mathsf{trap} } \\ +{[\textsc{\scriptsize E{-}memory.init{-}oob}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{memory.init}~x~y) &\hookrightarrow& \multicolumn{2}{l@{}}{ \mathsf{trap} } \\ & \multicolumn{4}{@{}l@{}}{\qquad\quad \mbox{if}~i + n > {|z{.}\mathsf{datas}{}[y]{.}\mathsf{bytes}|} \lor j + n > {|z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}|}} \\ -{[\textsc{\scriptsize E{-}memory.init{-}zero}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{memory.init}~x~y) &\hookrightarrow& \epsilon +{[\textsc{\scriptsize E{-}memory.init{-}zero}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{memory.init}~x~y) &\hookrightarrow& \epsilon &\qquad \mbox{otherwise, if}~n = 0 \\ -{[\textsc{\scriptsize E{-}memory.init{-}succ}]} \quad & z ; (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n)~(\mathsf{memory.init}~x~y) &\hookrightarrow& \\ - & \multicolumn{3}{@{}l@{}}{\qquad \begin{array}[t]{@{}l@{}} (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~z{.}\mathsf{datas}{}[y]{.}\mathsf{bytes}{}[i])~({\mathsf{i{\scriptstyle32}}{.}\mathsf{store}}{8}~x) \\ (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~j + 1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~i + 1)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n - 1)~(\mathsf{memory.init}~x~y) \end{array} } +{[\textsc{\scriptsize E{-}memory.init{-}succ}]} \quad & z ; (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{memory.init}~x~y) &\hookrightarrow& \\ + & \multicolumn{3}{@{}l@{}}{\qquad \begin{array}[t]{@{}l@{}} (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~z{.}\mathsf{datas}{}[y]{.}\mathsf{bytes}{}[i])~({\mathsf{i{\scriptstyle 32}}{.}\mathsf{store}}{8}~x) \\ (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j + 1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i + 1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n - 1)~(\mathsf{memory.init}~x~y) \end{array} } &\qquad \mbox{otherwise} \\ \end{array} $$ @@ -7656,9 +7656,9 @@ $$ $$ \begin{array}{@{}lcl@{}l@{}} -{\mathrm{allocmem}}(s, {}[ i .. j ]~\mathsf{i{\scriptstyle8}}) &=& (s{}[\mathsf{mems} = ..{\mathit{mi}}],\, {|s{.}\mathsf{mems}|}) +{\mathrm{allocmem}}(s, {}[ i .. j ]~\mathsf{i{\scriptstyle 8}}) &=& (s{}[\mathsf{mems} = ..{\mathit{mi}}],\, {|s{.}\mathsf{mems}|}) &\qquad \mbox{if}~{\mathit{mi}} = \{ \begin{array}[t]{@{}l@{}} -\mathsf{type}~({}[ i .. j ]~\mathsf{i{\scriptstyle8}}),\; \mathsf{bytes}~{0^{i \cdot 64 \, {\mathrm{Ki}}}} \}\end{array} \\ +\mathsf{type}~({}[ i .. j ]~\mathsf{i{\scriptstyle 8}}),\; \mathsf{bytes}~{0^{i \cdot 64 \, {\mathrm{{\scriptstyle K}i}}}} \}\end{array} \\ \end{array} $$ @@ -7762,14 +7762,14 @@ $$ \begin{array}{@{}lcl@{}l@{}} {\mathrm{runelem}}(\mathsf{elem}~{\mathit{reftype}}~{{\mathit{expr}}^\ast}~(\mathsf{passive}), y) &=& \epsilon \\ {\mathrm{runelem}}(\mathsf{elem}~{\mathit{reftype}}~{{\mathit{expr}}^\ast}~(\mathsf{declare}), y) &=& (\mathsf{elem.drop}~y) \\ -{\mathrm{runelem}}(\mathsf{elem}~{\mathit{reftype}}~{{\mathit{expr}}^\ast}~(\mathsf{active}~x~{{\mathit{instr}}^\ast}), y) &=& {{\mathit{instr}}^\ast}~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~0)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~{|{{\mathit{expr}}^\ast}|})~(\mathsf{table.init}~x~y)~(\mathsf{elem.drop}~y) \\ +{\mathrm{runelem}}(\mathsf{elem}~{\mathit{reftype}}~{{\mathit{expr}}^\ast}~(\mathsf{active}~x~{{\mathit{instr}}^\ast}), y) &=& {{\mathit{instr}}^\ast}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~0)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~{|{{\mathit{expr}}^\ast}|})~(\mathsf{table.init}~x~y)~(\mathsf{elem.drop}~y) \\ \end{array} $$ $$ \begin{array}{@{}lcl@{}l@{}} {\mathrm{rundata}}(\mathsf{data}~{{\mathit{byte}}^\ast}~(\mathsf{passive}), y) &=& \epsilon \\ -{\mathrm{rundata}}(\mathsf{data}~{{\mathit{byte}}^\ast}~(\mathsf{active}~x~{{\mathit{instr}}^\ast}), y) &=& {{\mathit{instr}}^\ast}~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~0)~(\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~{|{{\mathit{byte}}^\ast}|})~(\mathsf{memory.init}~x~y)~(\mathsf{data.drop}~y) \\ +{\mathrm{rundata}}(\mathsf{data}~{{\mathit{byte}}^\ast}~(\mathsf{active}~x~{{\mathit{instr}}^\ast}), y) &=& {{\mathit{instr}}^\ast}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~0)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~{|{{\mathit{byte}}^\ast}|})~(\mathsf{memory.init}~x~y)~(\mathsf{data.drop}~y) \\ \end{array} $$ @@ -7819,7 +7819,7 @@ $$ $$ \begin{array}{@{}l@{}rrlll@{}l@{}} -& {\mathtt{vec}}({\mathtt{X}}) &::=& n{:}{\mathtt{u{\scriptstyle32}}}~{({\mathit{el}}{:}{\mathtt{X}})^{n}} &\Rightarrow& {{\mathit{el}}^{n}} \\ +& {\mathtt{vec}}({\mathtt{X}}) &::=& n{:}{\mathtt{u32}}~{({\mathit{el}}{:}{\mathtt{X}})^{n}} &\Rightarrow& {{\mathit{el}}^{n}} \\ \end{array} $$ @@ -7830,17 +7830,17 @@ $$ $$ \begin{array}{@{}l@{}rrlll@{}l@{}} & {\mathtt{byte}} &::=& b{:}\mathtt{0x00} ~|~ \dots ~|~ b{:}\mathtt{0xFF} &\Rightarrow& b \\ -& {{\mathtt{u}}}{N{:}{\mathtt{N}}} &::=& n{:}{\mathtt{byte}} &\Rightarrow& n - &\qquad \mbox{if}~n < {2^{7}} \land n < {2^{N}} \\ &&|& -n{:}{\mathtt{byte}}~m{:}{{\mathtt{u}}}{(N - 7)} &\Rightarrow& {2^{7}} \cdot m + (n - {2^{7}}) - &\qquad \mbox{if}~n \geq {2^{7}} \land N > 7 \\ -& {{\mathtt{s}}}{N{:}{\mathtt{N}}} &::=& n{:}{\mathtt{byte}} &\Rightarrow& n - &\qquad \mbox{if}~n < {2^{6}} \land n < {2^{N - 1}} \\ &&|& +& {{\mathtt{u}}}{{\mathit{{\scriptstyle N}}}{:}{\mathtt{N}}} &::=& n{:}{\mathtt{byte}} &\Rightarrow& n + &\qquad \mbox{if}~n < {2^{7}} \land n < {2^{{\mathit{{\scriptstyle N}}}}} \\ &&|& +n{:}{\mathtt{byte}}~m{:}{{\mathtt{u}}}{({\mathit{{\scriptstyle N}}} - 7)} &\Rightarrow& {2^{7}} \cdot m + (n - {2^{7}}) + &\qquad \mbox{if}~n \geq {2^{7}} \land {\mathit{{\scriptstyle N}}} > 7 \\ +& {{\mathtt{s}}}{{\mathit{{\scriptstyle N}}}{:}{\mathtt{N}}} &::=& n{:}{\mathtt{byte}} &\Rightarrow& n + &\qquad \mbox{if}~n < {2^{6}} \land n < {2^{{\mathit{{\scriptstyle N}}} - 1}} \\ &&|& n{:}{\mathtt{byte}} &\Rightarrow& n - {2^{7}} - &\qquad \mbox{if}~{2^{6}} \leq n < {2^{7}} \land n \geq {2^{7}} - {2^{N - 1}} \\ &&|& -n{:}{\mathtt{byte}}~i{:}{{\mathtt{u}}}{(N - 7)} &\Rightarrow& {2^{7}} \cdot i + (n - {2^{7}}) - &\qquad \mbox{if}~n \geq {2^{7}} \land N > 7 \\ -& {{\mathtt{i}}}{N{:}{\mathtt{N}}} &::=& i{:}{{\mathtt{s}}}{{\mathtt{N}}} &\Rightarrow& {{{{\mathrm{signed}}}_{N}^{{-1}}}}{(i)} \\ + &\qquad \mbox{if}~{2^{6}} \leq n < {2^{7}} \land n \geq {2^{7}} - {2^{{\mathit{{\scriptstyle N}}} - 1}} \\ &&|& +n{:}{\mathtt{byte}}~i{:}{{\mathtt{u}}}{({\mathit{{\scriptstyle N}}} - 7)} &\Rightarrow& {2^{7}} \cdot i + (n - {2^{7}}) + &\qquad \mbox{if}~n \geq {2^{7}} \land {\mathit{{\scriptstyle N}}} > 7 \\ +& {{\mathtt{i}}}{{\mathit{{\scriptstyle N}}}{:}{\mathtt{N}}} &::=& i{:}{{\mathtt{s}}}{{\mathtt{N}}} &\Rightarrow& {{{{\mathrm{signed}}}_{{\mathit{{\scriptstyle N}}}}^{{-1}}}}{(i)} \\ \end{array} $$ @@ -7848,7 +7848,7 @@ $$ $$ \begin{array}{@{}l@{}rrlll@{}l@{}} -& {{\mathtt{f}}}{N{:}{\mathtt{N}}} &::=& {b^\ast}{:}{{\mathtt{byte}}^{N / 8}} &\Rightarrow& {\mathrm{invfbytes}}(N, {b^\ast}) \\ +& {{\mathtt{f}}}{{\mathit{{\scriptstyle N}}}{:}{\mathtt{N}}} &::=& {b^\ast}{:}{{\mathtt{byte}}^{{\mathit{{\scriptstyle N}}} / 8}} &\Rightarrow& {\mathrm{invfbytes}}({\mathit{{\scriptstyle N}}}, {b^\ast}) \\ \end{array} $$ @@ -7856,11 +7856,11 @@ $$ $$ \begin{array}{@{}l@{}rrlll@{}l@{}} -& {\mathtt{u{\scriptstyle32}}} &::=& n{:}{{\mathtt{u}}}{32} &\Rightarrow& n \\ -& {\mathtt{u{\scriptstyle64}}} &::=& n{:}{{\mathtt{u}}}{64} &\Rightarrow& n \\ -& {\mathtt{s{\scriptstyle33}}} &::=& i{:}{{\mathtt{s}}}{33} &\Rightarrow& i \\ -& {\mathtt{f{\scriptstyle32}}} &::=& p{:}{{\mathtt{f}}}{32} &\Rightarrow& p \\ -& {\mathtt{f{\scriptstyle64}}} &::=& p{:}{{\mathtt{f}}}{64} &\Rightarrow& p \\ +& {\mathtt{u32}} &::=& n{:}{{\mathtt{u}}}{32} &\Rightarrow& n \\ +& {\mathtt{u64}} &::=& n{:}{{\mathtt{u}}}{64} &\Rightarrow& n \\ +& {\mathtt{s33}} &::=& i{:}{{\mathtt{s}}}{33} &\Rightarrow& i \\ +& {\mathtt{f32}} &::=& p{:}{{\mathtt{f}}}{32} &\Rightarrow& p \\ +& {\mathtt{f64}} &::=& p{:}{{\mathtt{f}}}{64} &\Rightarrow& p \\ \end{array} $$ @@ -7868,22 +7868,22 @@ $$ $$ \begin{array}{@{}lcl@{}l@{}} -{\mathrm{utf{\scriptstyle8}}}({\mathit{ch}}) &=& b +{\mathrm{utf{\scriptstyle 8}}}({\mathit{ch}}) &=& b &\qquad \mbox{if}~{\mathit{ch}} < \mathrm{U{+}80} \land {\mathit{ch}} = b \\ -{\mathrm{utf{\scriptstyle8}}}({\mathit{ch}}) &=& b_1~b_2 +{\mathrm{utf{\scriptstyle 8}}}({\mathit{ch}}) &=& b_1~b_2 &\qquad \mbox{if}~\mathrm{U{+}80} \leq {\mathit{ch}} < \mathrm{U{+}0800} \land {\mathit{ch}} = {2^{6}} \cdot (b_1 - \mathtt{0xC0}) + (b_2 - \mathtt{0x80}) \\ -{\mathrm{utf{\scriptstyle8}}}({\mathit{ch}}) &=& b_1~b_2~b_3 +{\mathrm{utf{\scriptstyle 8}}}({\mathit{ch}}) &=& b_1~b_2~b_3 &\qquad \mbox{if}~(\mathrm{U{+}0800} \leq {\mathit{ch}} < \mathrm{U{+}D800} \lor \mathrm{U{+}E000} \leq {\mathit{ch}} < \mathrm{U{+}10000}) \land {\mathit{ch}} = {2^{12}} \cdot (b_1 - \mathtt{0xE0}) + {2^{6}} \cdot (b_2 - \mathtt{0x80}) + (b_3 - \mathtt{0x80}) \\ -{\mathrm{utf{\scriptstyle8}}}({\mathit{ch}}) &=& b_1~b_2~b_3~b_4 +{\mathrm{utf{\scriptstyle 8}}}({\mathit{ch}}) &=& b_1~b_2~b_3~b_4 &\qquad \mbox{if}~(\mathrm{U{+}10000} \leq {\mathit{ch}} < \mathrm{U{+}11000}) \land {\mathit{ch}} = {2^{18}} \cdot (b_1 - \mathtt{0xF0}) + {2^{12}} \cdot (b_2 - \mathtt{0x80}) + {2^{6}} \cdot (b_3 - \mathtt{0x80}) + (b_4 - \mathtt{0x80}) \\ -{\mathrm{utf{\scriptstyle8}}}({{\mathit{ch}}^\ast}) &=& {\mathrm{concat}}({{\mathrm{utf{\scriptstyle8}}}({\mathit{ch}})^\ast}) \\ +{\mathrm{utf{\scriptstyle 8}}}({{\mathit{ch}}^\ast}) &=& {\mathrm{concat}}({{\mathrm{utf{\scriptstyle 8}}}({\mathit{ch}})^\ast}) \\ \end{array} $$ $$ \begin{array}{@{}l@{}rrlll@{}l@{}} & {\mathtt{name}} &::=& {b^\ast}{:}{\mathtt{vec}}({\mathtt{byte}}) &\Rightarrow& {\mathit{name}} - &\qquad \mbox{if}~{\mathrm{utf{\scriptstyle8}}}({\mathit{name}}) = {b^\ast} \\ + &\qquad \mbox{if}~{\mathrm{utf{\scriptstyle 8}}}({\mathit{name}}) = {b^\ast} \\ \end{array} $$ @@ -7891,15 +7891,15 @@ $$ $$ \begin{array}{@{}l@{}rrlll@{}l@{}} -& {\mathtt{typeidx}} &::=& x{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& x \\ -& {\mathtt{funcidx}} &::=& x{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& x \\ -& {\mathtt{globalidx}} &::=& x{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& x \\ -& {\mathtt{tableidx}} &::=& x{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& x \\ -& {\mathtt{memidx}} &::=& x{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& x \\ -& {\mathtt{elemidx}} &::=& x{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& x \\ -& {\mathtt{dataidx}} &::=& x{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& x \\ -& {\mathtt{localidx}} &::=& x{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& x \\ -& {\mathtt{labelidx}} &::=& x{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& x \\ +& {\mathtt{typeidx}} &::=& x{:}{\mathtt{u32}} &\Rightarrow& x \\ +& {\mathtt{funcidx}} &::=& x{:}{\mathtt{u32}} &\Rightarrow& x \\ +& {\mathtt{globalidx}} &::=& x{:}{\mathtt{u32}} &\Rightarrow& x \\ +& {\mathtt{tableidx}} &::=& x{:}{\mathtt{u32}} &\Rightarrow& x \\ +& {\mathtt{memidx}} &::=& x{:}{\mathtt{u32}} &\Rightarrow& x \\ +& {\mathtt{elemidx}} &::=& x{:}{\mathtt{u32}} &\Rightarrow& x \\ +& {\mathtt{dataidx}} &::=& x{:}{\mathtt{u32}} &\Rightarrow& x \\ +& {\mathtt{localidx}} &::=& x{:}{\mathtt{u32}} &\Rightarrow& x \\ +& {\mathtt{labelidx}} &::=& x{:}{\mathtt{u32}} &\Rightarrow& x \\ & {\mathtt{externidx}} &::=& \mathtt{0x00}~x{:}{\mathtt{funcidx}} &\Rightarrow& \mathsf{func}~x \\ &&|& \mathtt{0x01}~x{:}{\mathtt{tableidx}} &\Rightarrow& \mathsf{table}~x \\ &&|& \mathtt{0x02}~x{:}{\mathtt{memidx}} &\Rightarrow& \mathsf{mem}~x \\ &&|& @@ -7913,11 +7913,11 @@ $$ $$ \begin{array}{@{}l@{}rrlll@{}l@{}} -& {\mathtt{numtype}} &::=& \mathtt{0x7F} &\Rightarrow& \mathsf{i{\scriptstyle32}} \\ &&|& -\mathtt{0x7E} &\Rightarrow& \mathsf{i{\scriptstyle64}} \\ &&|& -\mathtt{0x7D} &\Rightarrow& \mathsf{f{\scriptstyle32}} \\ &&|& -\mathtt{0x7C} &\Rightarrow& \mathsf{f{\scriptstyle64}} \\ -& {\mathtt{vectype}} &::=& \mathtt{0x7B} &\Rightarrow& \mathsf{v{\scriptstyle128}} \\ +& {\mathtt{numtype}} &::=& \mathtt{0x7F} &\Rightarrow& \mathsf{i{\scriptstyle 32}} \\ &&|& +\mathtt{0x7E} &\Rightarrow& \mathsf{i{\scriptstyle 64}} \\ &&|& +\mathtt{0x7D} &\Rightarrow& \mathsf{f{\scriptstyle 32}} \\ &&|& +\mathtt{0x7C} &\Rightarrow& \mathsf{f{\scriptstyle 64}} \\ +& {\mathtt{vectype}} &::=& \mathtt{0x7B} &\Rightarrow& \mathsf{v{\scriptstyle 128}} \\ & {\mathtt{absheaptype}} &::=& \mathtt{0x73} &\Rightarrow& \mathsf{nofunc} \\ &&|& \mathtt{0x72} &\Rightarrow& \mathsf{noextern} \\ &&|& \mathtt{0x71} &\Rightarrow& \mathsf{none} \\ &&|& @@ -7925,11 +7925,11 @@ $$ \mathtt{0x6F} &\Rightarrow& \mathsf{extern} \\ &&|& \mathtt{0x6E} &\Rightarrow& \mathsf{any} \\ &&|& \mathtt{0x6D} &\Rightarrow& \mathsf{eq} \\ &&|& -\mathtt{0x6C} &\Rightarrow& \mathsf{i{\scriptstyle31}} \\ &&|& +\mathtt{0x6C} &\Rightarrow& \mathsf{i{\scriptstyle 31}} \\ &&|& \mathtt{0x6B} &\Rightarrow& \mathsf{struct} \\ &&|& \mathtt{0x6A} &\Rightarrow& \mathsf{array} \\ & {\mathtt{heaptype}} &::=& {\mathit{ht}}{:}{\mathtt{absheaptype}} &\Rightarrow& {\mathit{ht}} \\ &&|& -x{:}{\mathtt{s{\scriptstyle33}}} &\Rightarrow& x +x{:}{\mathtt{s33}} &\Rightarrow& x &\qquad \mbox{if}~x \geq 0 \\ & {\mathtt{reftype}} &::=& \mathtt{0x64}~{\mathit{ht}}{:}{\mathtt{heaptype}} &\Rightarrow& \mathsf{ref}~{\mathit{ht}} \\ &&|& \mathtt{0x63}~{\mathit{ht}}{:}{\mathtt{heaptype}} &\Rightarrow& \mathsf{ref}~\mathsf{null}~{\mathit{ht}} \\ &&|& @@ -7954,8 +7954,8 @@ $$ \begin{array}{@{}l@{}rrlll@{}l@{}} & {\mathtt{mut}} &::=& \mathtt{0x00} &\Rightarrow& \epsilon \\ &&|& \mathtt{0x01} &\Rightarrow& \mathsf{mut} \\ -& {\mathtt{packtype}} &::=& \mathtt{0x78} &\Rightarrow& \mathsf{i{\scriptstyle8}} \\ &&|& -\mathtt{0x77} &\Rightarrow& \mathsf{i{\scriptstyle16}} \\ +& {\mathtt{packtype}} &::=& \mathtt{0x78} &\Rightarrow& \mathsf{i{\scriptstyle 8}} \\ &&|& +\mathtt{0x77} &\Rightarrow& \mathsf{i{\scriptstyle 16}} \\ & {\mathtt{storagetype}} &::=& t{:}{\mathtt{valtype}} &\Rightarrow& t \\ &&|& {\mathit{pt}}{:}{\mathtt{packtype}} &\Rightarrow& {\mathit{pt}} \\ & {\mathtt{fieldtype}} &::=& {\mathit{zt}}{:}{\mathtt{storagetype}}~{\mathsf{mut}^?}{:}{\mathtt{mut}} &\Rightarrow& {\mathsf{mut}^?}~{\mathit{zt}} \\ @@ -7974,11 +7974,11 @@ $$ $$ \begin{array}{@{}l@{}rrlll@{}l@{}} -& {\mathtt{limits}} &::=& \mathtt{0x00}~n{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& {}[ n .. {2^{32}} - 1 ] \\ &&|& -\mathtt{0x01}~n{:}{\mathtt{u{\scriptstyle32}}}~m{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& {}[ n .. m ] \\ +& {\mathtt{limits}} &::=& \mathtt{0x00}~n{:}{\mathtt{u32}} &\Rightarrow& {}[ n .. {2^{32}} - 1 ] \\ &&|& +\mathtt{0x01}~n{:}{\mathtt{u32}}~m{:}{\mathtt{u32}} &\Rightarrow& {}[ n .. m ] \\ & {\mathtt{globaltype}} &::=& t{:}{\mathtt{valtype}}~{\mathsf{mut}^?}{:}{\mathtt{mut}} &\Rightarrow& {\mathsf{mut}^?}~t \\ & {\mathtt{tabletype}} &::=& {\mathit{rt}}{:}{\mathtt{reftype}}~{\mathit{lim}}{:}{\mathtt{limits}} &\Rightarrow& {\mathit{lim}}~{\mathit{rt}} \\ -& {\mathtt{memtype}} &::=& {\mathit{lim}}{:}{\mathtt{limits}} &\Rightarrow& {\mathit{lim}}~\mathsf{i{\scriptstyle8}} \\ +& {\mathtt{memtype}} &::=& {\mathit{lim}}{:}{\mathtt{limits}} &\Rightarrow& {\mathit{lim}}~\mathsf{i{\scriptstyle 8}} \\ \end{array} $$ @@ -8001,7 +8001,7 @@ $$ \begin{array}{@{}l@{}rrlll@{}l@{}} & {\mathtt{blocktype}} &::=& \mathtt{0x40} &\Rightarrow& \epsilon \\ &&|& t{:}{\mathtt{valtype}} &\Rightarrow& t \\ &&|& -i{:}{\mathtt{s{\scriptstyle33}}} &\Rightarrow& x +i{:}{\mathtt{s33}} &\Rightarrow& x &\qquad \mbox{if}~i \geq 0 \land i = x \\ \end{array} $$ @@ -8018,7 +8018,7 @@ $$ \mathtt{0x04}~{\mathit{bt}}{:}{\mathtt{blocktype}}~{({\mathit{in}}_1{:}{\mathtt{instr}})^\ast}~\mathtt{0x05}~{({\mathit{in}}_2{:}{\mathtt{instr}})^\ast}~\mathtt{0x0B} &\Rightarrow& \mathsf{if}~{\mathit{bt}}~{{\mathit{in}}_1^\ast}~\mathsf{else}~{{\mathit{in}}_2^\ast} \\ &&|& \mathtt{0x0C}~l{:}{\mathtt{labelidx}} &\Rightarrow& \mathsf{br}~l \\ &&|& \mathtt{0x0D}~l{:}{\mathtt{labelidx}} &\Rightarrow& \mathsf{br\_if}~l \\ &&|& -\mathtt{0x0E}~{l^\ast}{:}{\mathtt{vec}}({\mathtt{labelidx}})~l_N{:}{\mathtt{labelidx}} &\Rightarrow& \mathsf{br\_table}~{l^\ast}~l_N \\ &&|& +\mathtt{0x0E}~{l^\ast}{:}{\mathtt{vec}}({\mathtt{labelidx}})~l_{\mathit{{\scriptstyle N}}}{:}{\mathtt{labelidx}} &\Rightarrow& \mathsf{br\_table}~{l^\ast}~l_{\mathit{{\scriptstyle N}}} \\ &&|& \mathtt{0x0F} &\Rightarrow& \mathsf{return} \\ &&|& \mathtt{0x10}~x{:}{\mathtt{funcidx}} &\Rightarrow& \mathsf{call}~x \\ &&|& \mathtt{0x11}~y{:}{\mathtt{typeidx}}~x{:}{\mathtt{tableidx}} &\Rightarrow& \mathsf{call\_indirect}~x~y \\ &&|& @@ -8050,12 +8050,12 @@ $$ \mathtt{0xD4} &\Rightarrow& \mathsf{ref.as\_non\_null} \\ &&|& \mathtt{0xD5}~l{:}{\mathtt{labelidx}} &\Rightarrow& \mathsf{br\_on\_null}~l \\ &&|& \mathtt{0xD6}~l{:}{\mathtt{labelidx}} &\Rightarrow& \mathsf{br\_on\_non\_null}~l \\ &&|& -\mathtt{0xFB}~20{:}{\mathtt{u{\scriptstyle32}}}~{\mathit{ht}}{:}{\mathtt{heaptype}} &\Rightarrow& \mathsf{ref.test}~(\mathsf{ref}~{\mathit{ht}}) \\ &&|& -\mathtt{0xFB}~21{:}{\mathtt{u{\scriptstyle32}}}~{\mathit{ht}}{:}{\mathtt{heaptype}} &\Rightarrow& \mathsf{ref.test}~(\mathsf{ref}~\mathsf{null}~{\mathit{ht}}) \\ &&|& -\mathtt{0xFB}~22{:}{\mathtt{u{\scriptstyle32}}}~{\mathit{ht}}{:}{\mathtt{heaptype}} &\Rightarrow& \mathsf{ref.cast}~(\mathsf{ref}~{\mathit{ht}}) \\ &&|& -\mathtt{0xFB}~23{:}{\mathtt{u{\scriptstyle32}}}~{\mathit{ht}}{:}{\mathtt{heaptype}} &\Rightarrow& \mathsf{ref.cast}~(\mathsf{ref}~\mathsf{null}~{\mathit{ht}}) \\ &&|& -\mathtt{0xFB}~24{:}{\mathtt{u{\scriptstyle32}}}~({{\mathsf{null}^?}}_1,\, {{\mathsf{null}^?}}_2){:}{\mathtt{castop}}~l{:}{\mathtt{labelidx}}~{\mathit{ht}}_1{:}{\mathtt{heaptype}}~{\mathit{ht}}_2{:}{\mathtt{heaptype}} &\Rightarrow& \mathsf{br\_on\_cast}~l~(\mathsf{ref}~{{\mathsf{null}^?}}_1~{\mathit{ht}}_1)~(\mathsf{ref}~{{\mathsf{null}^?}}_2~{\mathit{ht}}_2) \\ &&|& -\mathtt{0xFB}~25{:}{\mathtt{u{\scriptstyle32}}}~({{\mathsf{null}^?}}_1,\, {{\mathsf{null}^?}}_2){:}{\mathtt{castop}}~l{:}{\mathtt{labelidx}}~{\mathit{ht}}_1{:}{\mathtt{heaptype}}~{\mathit{ht}}_2{:}{\mathtt{heaptype}} &\Rightarrow& \mathsf{br\_on\_cast\_fail}~l~(\mathsf{ref}~{{\mathsf{null}^?}}_1~{\mathit{ht}}_1)~(\mathsf{ref}~{{\mathsf{null}^?}}_2~{\mathit{ht}}_2) \\ &&|& +\mathtt{0xFB}~20{:}{\mathtt{u32}}~{\mathit{ht}}{:}{\mathtt{heaptype}} &\Rightarrow& \mathsf{ref.test}~(\mathsf{ref}~{\mathit{ht}}) \\ &&|& +\mathtt{0xFB}~21{:}{\mathtt{u32}}~{\mathit{ht}}{:}{\mathtt{heaptype}} &\Rightarrow& \mathsf{ref.test}~(\mathsf{ref}~\mathsf{null}~{\mathit{ht}}) \\ &&|& +\mathtt{0xFB}~22{:}{\mathtt{u32}}~{\mathit{ht}}{:}{\mathtt{heaptype}} &\Rightarrow& \mathsf{ref.cast}~(\mathsf{ref}~{\mathit{ht}}) \\ &&|& +\mathtt{0xFB}~23{:}{\mathtt{u32}}~{\mathit{ht}}{:}{\mathtt{heaptype}} &\Rightarrow& \mathsf{ref.cast}~(\mathsf{ref}~\mathsf{null}~{\mathit{ht}}) \\ &&|& +\mathtt{0xFB}~24{:}{\mathtt{u32}}~({{\mathsf{null}^?}}_1,\, {{\mathsf{null}^?}}_2){:}{\mathtt{castop}}~l{:}{\mathtt{labelidx}}~{\mathit{ht}}_1{:}{\mathtt{heaptype}}~{\mathit{ht}}_2{:}{\mathtt{heaptype}} &\Rightarrow& \mathsf{br\_on\_cast}~l~(\mathsf{ref}~{{\mathsf{null}^?}}_1~{\mathit{ht}}_1)~(\mathsf{ref}~{{\mathsf{null}^?}}_2~{\mathit{ht}}_2) \\ &&|& +\mathtt{0xFB}~25{:}{\mathtt{u32}}~({{\mathsf{null}^?}}_1,\, {{\mathsf{null}^?}}_2){:}{\mathtt{castop}}~l{:}{\mathtt{labelidx}}~{\mathit{ht}}_1{:}{\mathtt{heaptype}}~{\mathit{ht}}_2{:}{\mathtt{heaptype}} &\Rightarrow& \mathsf{br\_on\_cast\_fail}~l~(\mathsf{ref}~{{\mathsf{null}^?}}_1~{\mathit{ht}}_1)~(\mathsf{ref}~{{\mathsf{null}^?}}_2~{\mathit{ht}}_2) \\ &&|& \dots \\ \end{array} $$ @@ -8065,31 +8065,31 @@ $$ $$ \begin{array}{@{}l@{}rrlll@{}l@{}} & {\mathtt{instr}} &::=& \dots \\ &&|& -\mathtt{0xFB}~0{:}{\mathtt{u{\scriptstyle32}}}~x{:}{\mathtt{typeidx}} &\Rightarrow& \mathsf{struct.new}~x \\ &&|& -\mathtt{0xFB}~1{:}{\mathtt{u{\scriptstyle32}}}~x{:}{\mathtt{typeidx}} &\Rightarrow& \mathsf{struct.new\_default}~x \\ &&|& -\mathtt{0xFB}~2{:}{\mathtt{u{\scriptstyle32}}}~x{:}{\mathtt{typeidx}}~i{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& \mathsf{struct.get}~x~i \\ &&|& -\mathtt{0xFB}~3{:}{\mathtt{u{\scriptstyle32}}}~x{:}{\mathtt{typeidx}}~i{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& {\mathsf{struct.get}}{\mathsf{\_}}{\mathsf{s}}~x~i \\ &&|& -\mathtt{0xFB}~4{:}{\mathtt{u{\scriptstyle32}}}~x{:}{\mathtt{typeidx}}~i{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& {\mathsf{struct.get}}{\mathsf{\_}}{\mathsf{u}}~x~i \\ &&|& -\mathtt{0xFB}~5{:}{\mathtt{u{\scriptstyle32}}}~x{:}{\mathtt{typeidx}}~i{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& \mathsf{struct.set}~x~i \\ &&|& -\mathtt{0xFB}~6{:}{\mathtt{u{\scriptstyle32}}}~x{:}{\mathtt{typeidx}} &\Rightarrow& \mathsf{array.new}~x \\ &&|& -\mathtt{0xFB}~7{:}{\mathtt{u{\scriptstyle32}}}~x{:}{\mathtt{typeidx}} &\Rightarrow& \mathsf{array.new\_default}~x \\ &&|& -\mathtt{0xFB}~8{:}{\mathtt{u{\scriptstyle32}}}~x{:}{\mathtt{typeidx}}~n{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& \mathsf{array.new\_fixed}~x~n \\ &&|& -\mathtt{0xFB}~9{:}{\mathtt{u{\scriptstyle32}}}~x{:}{\mathtt{typeidx}}~y{:}{\mathtt{dataidx}} &\Rightarrow& \mathsf{array.new\_data}~x~y \\ &&|& -\mathtt{0xFB}~10{:}{\mathtt{u{\scriptstyle32}}}~x{:}{\mathtt{typeidx}}~y{:}{\mathtt{elemidx}} &\Rightarrow& \mathsf{array.new\_elem}~x~y \\ &&|& -\mathtt{0xFB}~11{:}{\mathtt{u{\scriptstyle32}}}~x{:}{\mathtt{typeidx}} &\Rightarrow& \mathsf{array.get}~x \\ &&|& -\mathtt{0xFB}~12{:}{\mathtt{u{\scriptstyle32}}}~x{:}{\mathtt{typeidx}} &\Rightarrow& {\mathsf{array.get}}{\mathsf{\_}}{\mathsf{s}}~x \\ &&|& -\mathtt{0xFB}~13{:}{\mathtt{u{\scriptstyle32}}}~x{:}{\mathtt{typeidx}} &\Rightarrow& {\mathsf{array.get}}{\mathsf{\_}}{\mathsf{u}}~x \\ &&|& -\mathtt{0xFB}~14{:}{\mathtt{u{\scriptstyle32}}}~x{:}{\mathtt{typeidx}} &\Rightarrow& \mathsf{array.set}~x \\ &&|& -\mathtt{0xFB}~15{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& \mathsf{array.len} \\ &&|& -\mathtt{0xFB}~16{:}{\mathtt{u{\scriptstyle32}}}~x{:}{\mathtt{typeidx}} &\Rightarrow& \mathsf{array.fill}~x \\ &&|& -\mathtt{0xFB}~17{:}{\mathtt{u{\scriptstyle32}}}~x_1{:}{\mathtt{typeidx}}~x_2{:}{\mathtt{typeidx}} &\Rightarrow& \mathsf{array.copy}~x_1~x_2 \\ &&|& -\mathtt{0xFB}~18{:}{\mathtt{u{\scriptstyle32}}}~x{:}{\mathtt{typeidx}}~y{:}{\mathtt{dataidx}} &\Rightarrow& \mathsf{array.init\_data}~x~y \\ &&|& -\mathtt{0xFB}~19{:}{\mathtt{u{\scriptstyle32}}}~x{:}{\mathtt{typeidx}}~y{:}{\mathtt{elemidx}} &\Rightarrow& \mathsf{array.init\_elem}~x~y \\ &&|& -\mathtt{0xFB}~26{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& \mathsf{any.convert\_extern} \\ &&|& -\mathtt{0xFB}~27{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& \mathsf{extern.convert\_any} \\ &&|& -\mathtt{0xFB}~28{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& \mathsf{ref.i{\scriptstyle31}} \\ &&|& -\mathtt{0xFB}~29{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& {\mathsf{i{\scriptstyle31}.get}}{\mathsf{\_}}{\mathsf{s}} \\ &&|& -\mathtt{0xFB}~30{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& {\mathsf{i{\scriptstyle31}.get}}{\mathsf{\_}}{\mathsf{u}} \\ &&|& +\mathtt{0xFB}~0{:}{\mathtt{u32}}~x{:}{\mathtt{typeidx}} &\Rightarrow& \mathsf{struct.new}~x \\ &&|& +\mathtt{0xFB}~1{:}{\mathtt{u32}}~x{:}{\mathtt{typeidx}} &\Rightarrow& \mathsf{struct.new\_default}~x \\ &&|& +\mathtt{0xFB}~2{:}{\mathtt{u32}}~x{:}{\mathtt{typeidx}}~i{:}{\mathtt{u32}} &\Rightarrow& \mathsf{struct.get}~x~i \\ &&|& +\mathtt{0xFB}~3{:}{\mathtt{u32}}~x{:}{\mathtt{typeidx}}~i{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{struct.get}}{\mathsf{\_}}{\mathsf{s}}~x~i \\ &&|& +\mathtt{0xFB}~4{:}{\mathtt{u32}}~x{:}{\mathtt{typeidx}}~i{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{struct.get}}{\mathsf{\_}}{\mathsf{u}}~x~i \\ &&|& +\mathtt{0xFB}~5{:}{\mathtt{u32}}~x{:}{\mathtt{typeidx}}~i{:}{\mathtt{u32}} &\Rightarrow& \mathsf{struct.set}~x~i \\ &&|& +\mathtt{0xFB}~6{:}{\mathtt{u32}}~x{:}{\mathtt{typeidx}} &\Rightarrow& \mathsf{array.new}~x \\ &&|& +\mathtt{0xFB}~7{:}{\mathtt{u32}}~x{:}{\mathtt{typeidx}} &\Rightarrow& \mathsf{array.new\_default}~x \\ &&|& +\mathtt{0xFB}~8{:}{\mathtt{u32}}~x{:}{\mathtt{typeidx}}~n{:}{\mathtt{u32}} &\Rightarrow& \mathsf{array.new\_fixed}~x~n \\ &&|& +\mathtt{0xFB}~9{:}{\mathtt{u32}}~x{:}{\mathtt{typeidx}}~y{:}{\mathtt{dataidx}} &\Rightarrow& \mathsf{array.new\_data}~x~y \\ &&|& +\mathtt{0xFB}~10{:}{\mathtt{u32}}~x{:}{\mathtt{typeidx}}~y{:}{\mathtt{elemidx}} &\Rightarrow& \mathsf{array.new\_elem}~x~y \\ &&|& +\mathtt{0xFB}~11{:}{\mathtt{u32}}~x{:}{\mathtt{typeidx}} &\Rightarrow& \mathsf{array.get}~x \\ &&|& +\mathtt{0xFB}~12{:}{\mathtt{u32}}~x{:}{\mathtt{typeidx}} &\Rightarrow& {\mathsf{array.get}}{\mathsf{\_}}{\mathsf{s}}~x \\ &&|& +\mathtt{0xFB}~13{:}{\mathtt{u32}}~x{:}{\mathtt{typeidx}} &\Rightarrow& {\mathsf{array.get}}{\mathsf{\_}}{\mathsf{u}}~x \\ &&|& +\mathtt{0xFB}~14{:}{\mathtt{u32}}~x{:}{\mathtt{typeidx}} &\Rightarrow& \mathsf{array.set}~x \\ &&|& +\mathtt{0xFB}~15{:}{\mathtt{u32}} &\Rightarrow& \mathsf{array.len} \\ &&|& +\mathtt{0xFB}~16{:}{\mathtt{u32}}~x{:}{\mathtt{typeidx}} &\Rightarrow& \mathsf{array.fill}~x \\ &&|& +\mathtt{0xFB}~17{:}{\mathtt{u32}}~x_1{:}{\mathtt{typeidx}}~x_2{:}{\mathtt{typeidx}} &\Rightarrow& \mathsf{array.copy}~x_1~x_2 \\ &&|& +\mathtt{0xFB}~18{:}{\mathtt{u32}}~x{:}{\mathtt{typeidx}}~y{:}{\mathtt{dataidx}} &\Rightarrow& \mathsf{array.init\_data}~x~y \\ &&|& +\mathtt{0xFB}~19{:}{\mathtt{u32}}~x{:}{\mathtt{typeidx}}~y{:}{\mathtt{elemidx}} &\Rightarrow& \mathsf{array.init\_elem}~x~y \\ &&|& +\mathtt{0xFB}~26{:}{\mathtt{u32}} &\Rightarrow& \mathsf{any.convert\_extern} \\ &&|& +\mathtt{0xFB}~27{:}{\mathtt{u32}} &\Rightarrow& \mathsf{extern.convert\_any} \\ &&|& +\mathtt{0xFB}~28{:}{\mathtt{u32}} &\Rightarrow& \mathsf{ref.i{\scriptstyle 31}} \\ &&|& +\mathtt{0xFB}~29{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 31}.get}}{\mathsf{\_}}{\mathsf{s}} \\ &&|& +\mathtt{0xFB}~30{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 31}.get}}{\mathsf{\_}}{\mathsf{u}} \\ &&|& \dots \\ \end{array} $$ @@ -8127,12 +8127,12 @@ $$ & {\mathtt{instr}} &::=& \dots \\ &&|& \mathtt{0x25}~x{:}{\mathtt{tableidx}} &\Rightarrow& \mathsf{table.get}~x \\ &&|& \mathtt{0x26}~x{:}{\mathtt{tableidx}} &\Rightarrow& \mathsf{table.set}~x \\ &&|& -\mathtt{0xFC}~12{:}{\mathtt{u{\scriptstyle32}}}~y{:}{\mathtt{elemidx}}~x{:}{\mathtt{tableidx}} &\Rightarrow& \mathsf{table.init}~x~y \\ &&|& -\mathtt{0xFC}~13{:}{\mathtt{u{\scriptstyle32}}}~x{:}{\mathtt{elemidx}} &\Rightarrow& \mathsf{elem.drop}~x \\ &&|& -\mathtt{0xFC}~14{:}{\mathtt{u{\scriptstyle32}}}~x_1{:}{\mathtt{tableidx}}~x_2{:}{\mathtt{tableidx}} &\Rightarrow& \mathsf{table.copy}~x_1~x_2 \\ &&|& -\mathtt{0xFC}~15{:}{\mathtt{u{\scriptstyle32}}}~x{:}{\mathtt{tableidx}} &\Rightarrow& \mathsf{table.grow}~x \\ &&|& -\mathtt{0xFC}~16{:}{\mathtt{u{\scriptstyle32}}}~x{:}{\mathtt{tableidx}} &\Rightarrow& \mathsf{table.size}~x \\ &&|& -\mathtt{0xFC}~17{:}{\mathtt{u{\scriptstyle32}}}~x{:}{\mathtt{tableidx}} &\Rightarrow& \mathsf{table.fill}~x \\ &&|& +\mathtt{0xFC}~12{:}{\mathtt{u32}}~y{:}{\mathtt{elemidx}}~x{:}{\mathtt{tableidx}} &\Rightarrow& \mathsf{table.init}~x~y \\ &&|& +\mathtt{0xFC}~13{:}{\mathtt{u32}}~x{:}{\mathtt{elemidx}} &\Rightarrow& \mathsf{elem.drop}~x \\ &&|& +\mathtt{0xFC}~14{:}{\mathtt{u32}}~x_1{:}{\mathtt{tableidx}}~x_2{:}{\mathtt{tableidx}} &\Rightarrow& \mathsf{table.copy}~x_1~x_2 \\ &&|& +\mathtt{0xFC}~15{:}{\mathtt{u32}}~x{:}{\mathtt{tableidx}} &\Rightarrow& \mathsf{table.grow}~x \\ &&|& +\mathtt{0xFC}~16{:}{\mathtt{u32}}~x{:}{\mathtt{tableidx}} &\Rightarrow& \mathsf{table.size}~x \\ &&|& +\mathtt{0xFC}~17{:}{\mathtt{u32}}~x{:}{\mathtt{tableidx}} &\Rightarrow& \mathsf{table.fill}~x \\ &&|& \dots \\ \end{array} $$ @@ -8147,42 +8147,42 @@ $$ $$ \begin{array}{@{}l@{}rrlll@{}l@{}} -& {\mathtt{memarg}} &::=& n{:}{\mathtt{u{\scriptstyle32}}}~m{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& (0,\, \{ \begin{array}[t]{@{}l@{}} +& {\mathtt{memarg}} &::=& n{:}{\mathtt{u32}}~m{:}{\mathtt{u32}} &\Rightarrow& (0,\, \{ \begin{array}[t]{@{}l@{}} \mathsf{align}~n,\; \mathsf{offset}~m \}\end{array}) &\qquad \mbox{if}~n < {2^{6}} \\ &&|& -n{:}{\mathtt{u{\scriptstyle32}}}~x{:}{\mathtt{memidx}}~m{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& (x,\, \{ \begin{array}[t]{@{}l@{}} +n{:}{\mathtt{u32}}~x{:}{\mathtt{memidx}}~m{:}{\mathtt{u32}} &\Rightarrow& (x,\, \{ \begin{array}[t]{@{}l@{}} \mathsf{align}~n,\; \mathsf{offset}~m \}\end{array}) &\qquad \mbox{if}~{2^{6}} \leq n < {2^{7}} \\ & {\mathtt{instr}} &::=& \dots \\ &&|& -\mathtt{0x28}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& \mathsf{i{\scriptstyle32}}{.}\mathsf{load}~x~{\mathit{ao}} \\ &&|& -\mathtt{0x29}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& \mathsf{i{\scriptstyle64}}{.}\mathsf{load}~x~{\mathit{ao}} \\ &&|& -\mathtt{0x2A}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& \mathsf{f{\scriptstyle32}}{.}\mathsf{load}~x~{\mathit{ao}} \\ &&|& -\mathtt{0x2B}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& \mathsf{f{\scriptstyle64}}{.}\mathsf{load}~x~{\mathit{ao}} \\ &&|& -\mathtt{0x2C}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle32}}{.}\mathsf{load}}{{8}{\mathsf{\_}}{\mathsf{s}}}~x~{\mathit{ao}} \\ &&|& -\mathtt{0x2D}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle32}}{.}\mathsf{load}}{{8}{\mathsf{\_}}{\mathsf{u}}}~x~{\mathit{ao}} \\ &&|& -\mathtt{0x2E}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle32}}{.}\mathsf{load}}{{16}{\mathsf{\_}}{\mathsf{s}}}~x~{\mathit{ao}} \\ &&|& -\mathtt{0x2F}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle32}}{.}\mathsf{load}}{{16}{\mathsf{\_}}{\mathsf{u}}}~x~{\mathit{ao}} \\ &&|& -\mathtt{0x30}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle64}}{.}\mathsf{load}}{{8}{\mathsf{\_}}{\mathsf{s}}}~x~{\mathit{ao}} \\ &&|& -\mathtt{0x31}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle64}}{.}\mathsf{load}}{{8}{\mathsf{\_}}{\mathsf{u}}}~x~{\mathit{ao}} \\ &&|& -\mathtt{0x32}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle64}}{.}\mathsf{load}}{{16}{\mathsf{\_}}{\mathsf{s}}}~x~{\mathit{ao}} \\ &&|& -\mathtt{0x33}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle64}}{.}\mathsf{load}}{{16}{\mathsf{\_}}{\mathsf{u}}}~x~{\mathit{ao}} \\ &&|& -\mathtt{0x34}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle64}}{.}\mathsf{load}}{{32}{\mathsf{\_}}{\mathsf{s}}}~x~{\mathit{ao}} \\ &&|& -\mathtt{0x35}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle64}}{.}\mathsf{load}}{{32}{\mathsf{\_}}{\mathsf{u}}}~x~{\mathit{ao}} \\ &&|& -\mathtt{0x36}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& \mathsf{i{\scriptstyle32}}{.}\mathsf{store}~x~{\mathit{ao}} \\ &&|& -\mathtt{0x37}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& \mathsf{i{\scriptstyle64}}{.}\mathsf{store}~x~{\mathit{ao}} \\ &&|& -\mathtt{0x38}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& \mathsf{f{\scriptstyle32}}{.}\mathsf{store}~x~{\mathit{ao}} \\ &&|& -\mathtt{0x39}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& \mathsf{f{\scriptstyle64}}{.}\mathsf{store}~x~{\mathit{ao}} \\ &&|& -\mathtt{0x3A}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle32}}{.}\mathsf{store}}{8}~x~{\mathit{ao}} \\ &&|& -\mathtt{0x3B}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle32}}{.}\mathsf{store}}{16}~x~{\mathit{ao}} \\ &&|& -\mathtt{0x3C}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle64}}{.}\mathsf{store}}{8}~x~{\mathit{ao}} \\ &&|& -\mathtt{0x3D}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle64}}{.}\mathsf{store}}{16}~x~{\mathit{ao}} \\ &&|& -\mathtt{0x3E}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle64}}{.}\mathsf{store}}{32}~x~{\mathit{ao}} \\ &&|& +\mathtt{0x28}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& \mathsf{i{\scriptstyle 32}}{.}\mathsf{load}~x~{\mathit{ao}} \\ &&|& +\mathtt{0x29}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& \mathsf{i{\scriptstyle 64}}{.}\mathsf{load}~x~{\mathit{ao}} \\ &&|& +\mathtt{0x2A}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& \mathsf{f{\scriptstyle 32}}{.}\mathsf{load}~x~{\mathit{ao}} \\ &&|& +\mathtt{0x2B}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& \mathsf{f{\scriptstyle 64}}{.}\mathsf{load}~x~{\mathit{ao}} \\ &&|& +\mathtt{0x2C}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}{.}\mathsf{load}}{{8}{\mathsf{\_}}{\mathsf{s}}}~x~{\mathit{ao}} \\ &&|& +\mathtt{0x2D}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}{.}\mathsf{load}}{{8}{\mathsf{\_}}{\mathsf{u}}}~x~{\mathit{ao}} \\ &&|& +\mathtt{0x2E}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}{.}\mathsf{load}}{{16}{\mathsf{\_}}{\mathsf{s}}}~x~{\mathit{ao}} \\ &&|& +\mathtt{0x2F}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}{.}\mathsf{load}}{{16}{\mathsf{\_}}{\mathsf{u}}}~x~{\mathit{ao}} \\ &&|& +\mathtt{0x30}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}{.}\mathsf{load}}{{8}{\mathsf{\_}}{\mathsf{s}}}~x~{\mathit{ao}} \\ &&|& +\mathtt{0x31}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}{.}\mathsf{load}}{{8}{\mathsf{\_}}{\mathsf{u}}}~x~{\mathit{ao}} \\ &&|& +\mathtt{0x32}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}{.}\mathsf{load}}{{16}{\mathsf{\_}}{\mathsf{s}}}~x~{\mathit{ao}} \\ &&|& +\mathtt{0x33}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}{.}\mathsf{load}}{{16}{\mathsf{\_}}{\mathsf{u}}}~x~{\mathit{ao}} \\ &&|& +\mathtt{0x34}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}{.}\mathsf{load}}{{32}{\mathsf{\_}}{\mathsf{s}}}~x~{\mathit{ao}} \\ &&|& +\mathtt{0x35}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}{.}\mathsf{load}}{{32}{\mathsf{\_}}{\mathsf{u}}}~x~{\mathit{ao}} \\ &&|& +\mathtt{0x36}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& \mathsf{i{\scriptstyle 32}}{.}\mathsf{store}~x~{\mathit{ao}} \\ &&|& +\mathtt{0x37}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& \mathsf{i{\scriptstyle 64}}{.}\mathsf{store}~x~{\mathit{ao}} \\ &&|& +\mathtt{0x38}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& \mathsf{f{\scriptstyle 32}}{.}\mathsf{store}~x~{\mathit{ao}} \\ &&|& +\mathtt{0x39}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& \mathsf{f{\scriptstyle 64}}{.}\mathsf{store}~x~{\mathit{ao}} \\ &&|& +\mathtt{0x3A}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}{.}\mathsf{store}}{8}~x~{\mathit{ao}} \\ &&|& +\mathtt{0x3B}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}{.}\mathsf{store}}{16}~x~{\mathit{ao}} \\ &&|& +\mathtt{0x3C}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}{.}\mathsf{store}}{8}~x~{\mathit{ao}} \\ &&|& +\mathtt{0x3D}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}{.}\mathsf{store}}{16}~x~{\mathit{ao}} \\ &&|& +\mathtt{0x3E}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}{.}\mathsf{store}}{32}~x~{\mathit{ao}} \\ &&|& \mathtt{0x3F}~x{:}{\mathtt{memidx}} &\Rightarrow& \mathsf{memory.size}~x \\ &&|& \mathtt{0x40}~x{:}{\mathtt{memidx}} &\Rightarrow& \mathsf{memory.grow}~x \\ &&|& -\mathtt{0xFC}~8{:}{\mathtt{u{\scriptstyle32}}}~y{:}{\mathtt{dataidx}}~x{:}{\mathtt{memidx}} &\Rightarrow& \mathsf{memory.init}~x~y \\ &&|& -\mathtt{0xFC}~9{:}{\mathtt{u{\scriptstyle32}}}~x{:}{\mathtt{dataidx}} &\Rightarrow& \mathsf{data.drop}~x \\ &&|& -\mathtt{0xFC}~10{:}{\mathtt{u{\scriptstyle32}}}~x_1{:}{\mathtt{memidx}}~x_2{:}{\mathtt{memidx}} &\Rightarrow& \mathsf{memory.copy}~x_1~x_2 \\ &&|& -\mathtt{0xFC}~11{:}{\mathtt{u{\scriptstyle32}}}~x{:}{\mathtt{memidx}} &\Rightarrow& \mathsf{memory.fill}~x \\ &&|& +\mathtt{0xFC}~8{:}{\mathtt{u32}}~y{:}{\mathtt{dataidx}}~x{:}{\mathtt{memidx}} &\Rightarrow& \mathsf{memory.init}~x~y \\ &&|& +\mathtt{0xFC}~9{:}{\mathtt{u32}}~x{:}{\mathtt{dataidx}} &\Rightarrow& \mathsf{data.drop}~x \\ &&|& +\mathtt{0xFC}~10{:}{\mathtt{u32}}~x_1{:}{\mathtt{memidx}}~x_2{:}{\mathtt{memidx}} &\Rightarrow& \mathsf{memory.copy}~x_1~x_2 \\ &&|& +\mathtt{0xFC}~11{:}{\mathtt{u32}}~x{:}{\mathtt{memidx}} &\Rightarrow& \mathsf{memory.fill}~x \\ &&|& \dots \\ \end{array} $$ @@ -8192,108 +8192,108 @@ $$ $$ \begin{array}{@{}l@{}rrlll@{}l@{}} & {\mathtt{instr}} &::=& \dots \\ &&|& -\mathtt{0x41}~n{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& \mathsf{i{\scriptstyle32}}{.}\mathsf{const}~n \\ &&|& -\mathtt{0x42}~n{:}{\mathtt{u{\scriptstyle64}}} &\Rightarrow& \mathsf{i{\scriptstyle64}}{.}\mathsf{const}~n \\ &&|& -\mathtt{0x43}~p{:}{\mathtt{f{\scriptstyle32}}} &\Rightarrow& \mathsf{f{\scriptstyle32}}{.}\mathsf{const}~p \\ &&|& -\mathtt{0x44}~p{:}{\mathtt{f{\scriptstyle64}}} &\Rightarrow& \mathsf{f{\scriptstyle64}}{.}\mathsf{const}~p \\ &&|& -\mathtt{0x45} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} \mathsf{eqz} \\ &&|& -\mathtt{0x46} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} \mathsf{eq} \\ &&|& -\mathtt{0x47} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} \mathsf{ne} \\ &&|& -\mathtt{0x48} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} ({\mathsf{lt}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0x49} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} ({\mathsf{lt}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0x4A} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} ({\mathsf{gt}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0x4B} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} ({\mathsf{gt}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0x4C} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} ({\mathsf{le}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0x4D} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} ({\mathsf{le}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0x4E} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} ({\mathsf{ge}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0x4F} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} ({\mathsf{ge}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0x50} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} \mathsf{eqz} \\ &&|& -\mathtt{0x51} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} \mathsf{eq} \\ &&|& -\mathtt{0x52} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} \mathsf{ne} \\ &&|& -\mathtt{0x53} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} ({\mathsf{lt}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0x54} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} ({\mathsf{lt}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0x55} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} ({\mathsf{gt}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0x56} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} ({\mathsf{gt}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0x57} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} ({\mathsf{le}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0x58} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} ({\mathsf{le}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0x59} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} ({\mathsf{ge}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0x5A} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} ({\mathsf{ge}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0x5B} &\Rightarrow& \mathsf{f{\scriptstyle32}} {.} \mathsf{eq} \\ &&|& -\mathtt{0x5C} &\Rightarrow& \mathsf{f{\scriptstyle32}} {.} \mathsf{ne} \\ &&|& -\mathtt{0x5D} &\Rightarrow& \mathsf{f{\scriptstyle32}} {.} \mathsf{lt} \\ &&|& -\mathtt{0x5E} &\Rightarrow& \mathsf{f{\scriptstyle32}} {.} \mathsf{gt} \\ &&|& -\mathtt{0x5F} &\Rightarrow& \mathsf{f{\scriptstyle32}} {.} \mathsf{le} \\ &&|& -\mathtt{0x60} &\Rightarrow& \mathsf{f{\scriptstyle32}} {.} \mathsf{ge} \\ &&|& -\mathtt{0x61} &\Rightarrow& \mathsf{f{\scriptstyle64}} {.} \mathsf{eq} \\ &&|& -\mathtt{0x62} &\Rightarrow& \mathsf{f{\scriptstyle64}} {.} \mathsf{ne} \\ &&|& -\mathtt{0x63} &\Rightarrow& \mathsf{f{\scriptstyle64}} {.} \mathsf{lt} \\ &&|& -\mathtt{0x64} &\Rightarrow& \mathsf{f{\scriptstyle64}} {.} \mathsf{gt} \\ &&|& -\mathtt{0x65} &\Rightarrow& \mathsf{f{\scriptstyle64}} {.} \mathsf{le} \\ &&|& -\mathtt{0x66} &\Rightarrow& \mathsf{f{\scriptstyle64}} {.} \mathsf{ge} \\ &&|& -\mathtt{0x67} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} \mathsf{clz} \\ &&|& -\mathtt{0x68} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} \mathsf{ctz} \\ &&|& -\mathtt{0x69} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} \mathsf{popcnt} \\ &&|& -\mathtt{0x6A} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} \mathsf{add} \\ &&|& -\mathtt{0x6B} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} \mathsf{sub} \\ &&|& -\mathtt{0x6C} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} \mathsf{mul} \\ &&|& -\mathtt{0x6D} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} ({\mathsf{div}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0x6E} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} ({\mathsf{div}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0x6F} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} ({\mathsf{rem}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0x70} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} ({\mathsf{rem}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0x71} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} \mathsf{and} \\ &&|& -\mathtt{0x72} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} \mathsf{or} \\ &&|& -\mathtt{0x73} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} \mathsf{xor} \\ &&|& -\mathtt{0x74} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} \mathsf{shl} \\ &&|& -\mathtt{0x75} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} ({\mathsf{shr}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0x76} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} ({\mathsf{shr}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0x77} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} \mathsf{rotl} \\ &&|& -\mathtt{0x78} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} \mathsf{rotr} \\ &&|& -\mathtt{0x79} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} \mathsf{clz} \\ &&|& -\mathtt{0x7A} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} \mathsf{ctz} \\ &&|& -\mathtt{0x7B} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} \mathsf{popcnt} \\ &&|& -\mathtt{0x7C} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} \mathsf{add} \\ &&|& -\mathtt{0x7D} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} \mathsf{sub} \\ &&|& -\mathtt{0x7E} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} \mathsf{mul} \\ &&|& -\mathtt{0x7F} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} ({\mathsf{div}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0x80} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} ({\mathsf{div}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0x81} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} ({\mathsf{rem}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0x82} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} ({\mathsf{rem}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0x83} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} \mathsf{and} \\ &&|& -\mathtt{0x84} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} \mathsf{or} \\ &&|& -\mathtt{0x85} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} \mathsf{xor} \\ &&|& -\mathtt{0x86} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} \mathsf{shl} \\ &&|& -\mathtt{0x87} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} ({\mathsf{shr}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0x88} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} ({\mathsf{shr}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0x89} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} \mathsf{rotl} \\ &&|& -\mathtt{0x8A} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} \mathsf{rotr} \\ &&|& -\mathtt{0x8B} &\Rightarrow& \mathsf{f{\scriptstyle32}} {.} \mathsf{abs} \\ &&|& -\mathtt{0x8C} &\Rightarrow& \mathsf{f{\scriptstyle32}} {.} \mathsf{neg} \\ &&|& -\mathtt{0x8D} &\Rightarrow& \mathsf{f{\scriptstyle32}} {.} \mathsf{ceil} \\ &&|& -\mathtt{0x8E} &\Rightarrow& \mathsf{f{\scriptstyle32}} {.} \mathsf{floor} \\ &&|& -\mathtt{0x8F} &\Rightarrow& \mathsf{f{\scriptstyle32}} {.} \mathsf{trunc} \\ &&|& -\mathtt{0x90} &\Rightarrow& \mathsf{f{\scriptstyle32}} {.} \mathsf{nearest} \\ &&|& -\mathtt{0x91} &\Rightarrow& \mathsf{f{\scriptstyle32}} {.} \mathsf{sqrt} \\ &&|& -\mathtt{0x92} &\Rightarrow& \mathsf{f{\scriptstyle32}} {.} \mathsf{add} \\ &&|& -\mathtt{0x93} &\Rightarrow& \mathsf{f{\scriptstyle32}} {.} \mathsf{sub} \\ &&|& -\mathtt{0x94} &\Rightarrow& \mathsf{f{\scriptstyle32}} {.} \mathsf{mul} \\ &&|& -\mathtt{0x95} &\Rightarrow& \mathsf{f{\scriptstyle32}} {.} \mathsf{div} \\ &&|& -\mathtt{0x96} &\Rightarrow& \mathsf{f{\scriptstyle32}} {.} \mathsf{min} \\ &&|& -\mathtt{0x97} &\Rightarrow& \mathsf{f{\scriptstyle32}} {.} \mathsf{max} \\ &&|& -\mathtt{0x98} &\Rightarrow& \mathsf{f{\scriptstyle32}} {.} \mathsf{copysign} \\ &&|& -\mathtt{0x99} &\Rightarrow& \mathsf{f{\scriptstyle64}} {.} \mathsf{abs} \\ &&|& -\mathtt{0x9A} &\Rightarrow& \mathsf{f{\scriptstyle64}} {.} \mathsf{neg} \\ &&|& -\mathtt{0x9B} &\Rightarrow& \mathsf{f{\scriptstyle64}} {.} \mathsf{ceil} \\ &&|& -\mathtt{0x9C} &\Rightarrow& \mathsf{f{\scriptstyle64}} {.} \mathsf{floor} \\ &&|& -\mathtt{0x9D} &\Rightarrow& \mathsf{f{\scriptstyle64}} {.} \mathsf{trunc} \\ &&|& -\mathtt{0x9E} &\Rightarrow& \mathsf{f{\scriptstyle64}} {.} \mathsf{nearest} \\ &&|& -\mathtt{0x9F} &\Rightarrow& \mathsf{f{\scriptstyle64}} {.} \mathsf{sqrt} \\ &&|& -\mathtt{0xA0} &\Rightarrow& \mathsf{f{\scriptstyle64}} {.} \mathsf{add} \\ &&|& -\mathtt{0xA1} &\Rightarrow& \mathsf{f{\scriptstyle64}} {.} \mathsf{sub} \\ &&|& -\mathtt{0xA2} &\Rightarrow& \mathsf{f{\scriptstyle64}} {.} \mathsf{mul} \\ &&|& -\mathtt{0xA3} &\Rightarrow& \mathsf{f{\scriptstyle64}} {.} \mathsf{div} \\ &&|& -\mathtt{0xA4} &\Rightarrow& \mathsf{f{\scriptstyle64}} {.} \mathsf{min} \\ &&|& -\mathtt{0xA5} &\Rightarrow& \mathsf{f{\scriptstyle64}} {.} \mathsf{max} \\ &&|& -\mathtt{0xA6} &\Rightarrow& \mathsf{f{\scriptstyle64}} {.} \mathsf{copysign} \\ &&|& +\mathtt{0x41}~n{:}{\mathtt{u32}} &\Rightarrow& \mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n \\ &&|& +\mathtt{0x42}~n{:}{\mathtt{u64}} &\Rightarrow& \mathsf{i{\scriptstyle 64}}{.}\mathsf{const}~n \\ &&|& +\mathtt{0x43}~p{:}{\mathtt{f32}} &\Rightarrow& \mathsf{f{\scriptstyle 32}}{.}\mathsf{const}~p \\ &&|& +\mathtt{0x44}~p{:}{\mathtt{f64}} &\Rightarrow& \mathsf{f{\scriptstyle 64}}{.}\mathsf{const}~p \\ &&|& +\mathtt{0x45} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} \mathsf{eqz} \\ &&|& +\mathtt{0x46} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} \mathsf{eq} \\ &&|& +\mathtt{0x47} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} \mathsf{ne} \\ &&|& +\mathtt{0x48} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} ({\mathsf{lt}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0x49} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} ({\mathsf{lt}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0x4A} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} ({\mathsf{gt}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0x4B} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} ({\mathsf{gt}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0x4C} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} ({\mathsf{le}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0x4D} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} ({\mathsf{le}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0x4E} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} ({\mathsf{ge}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0x4F} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} ({\mathsf{ge}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0x50} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} \mathsf{eqz} \\ &&|& +\mathtt{0x51} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} \mathsf{eq} \\ &&|& +\mathtt{0x52} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} \mathsf{ne} \\ &&|& +\mathtt{0x53} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} ({\mathsf{lt}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0x54} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} ({\mathsf{lt}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0x55} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} ({\mathsf{gt}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0x56} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} ({\mathsf{gt}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0x57} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} ({\mathsf{le}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0x58} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} ({\mathsf{le}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0x59} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} ({\mathsf{ge}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0x5A} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} ({\mathsf{ge}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0x5B} &\Rightarrow& \mathsf{f{\scriptstyle 32}} {.} \mathsf{eq} \\ &&|& +\mathtt{0x5C} &\Rightarrow& \mathsf{f{\scriptstyle 32}} {.} \mathsf{ne} \\ &&|& +\mathtt{0x5D} &\Rightarrow& \mathsf{f{\scriptstyle 32}} {.} \mathsf{lt} \\ &&|& +\mathtt{0x5E} &\Rightarrow& \mathsf{f{\scriptstyle 32}} {.} \mathsf{gt} \\ &&|& +\mathtt{0x5F} &\Rightarrow& \mathsf{f{\scriptstyle 32}} {.} \mathsf{le} \\ &&|& +\mathtt{0x60} &\Rightarrow& \mathsf{f{\scriptstyle 32}} {.} \mathsf{ge} \\ &&|& +\mathtt{0x61} &\Rightarrow& \mathsf{f{\scriptstyle 64}} {.} \mathsf{eq} \\ &&|& +\mathtt{0x62} &\Rightarrow& \mathsf{f{\scriptstyle 64}} {.} \mathsf{ne} \\ &&|& +\mathtt{0x63} &\Rightarrow& \mathsf{f{\scriptstyle 64}} {.} \mathsf{lt} \\ &&|& +\mathtt{0x64} &\Rightarrow& \mathsf{f{\scriptstyle 64}} {.} \mathsf{gt} \\ &&|& +\mathtt{0x65} &\Rightarrow& \mathsf{f{\scriptstyle 64}} {.} \mathsf{le} \\ &&|& +\mathtt{0x66} &\Rightarrow& \mathsf{f{\scriptstyle 64}} {.} \mathsf{ge} \\ &&|& +\mathtt{0x67} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} \mathsf{clz} \\ &&|& +\mathtt{0x68} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} \mathsf{ctz} \\ &&|& +\mathtt{0x69} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} \mathsf{popcnt} \\ &&|& +\mathtt{0x6A} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} \mathsf{add} \\ &&|& +\mathtt{0x6B} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} \mathsf{sub} \\ &&|& +\mathtt{0x6C} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} \mathsf{mul} \\ &&|& +\mathtt{0x6D} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} ({\mathsf{div}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0x6E} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} ({\mathsf{div}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0x6F} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} ({\mathsf{rem}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0x70} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} ({\mathsf{rem}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0x71} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} \mathsf{and} \\ &&|& +\mathtt{0x72} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} \mathsf{or} \\ &&|& +\mathtt{0x73} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} \mathsf{xor} \\ &&|& +\mathtt{0x74} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} \mathsf{shl} \\ &&|& +\mathtt{0x75} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} ({\mathsf{shr}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0x76} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} ({\mathsf{shr}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0x77} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} \mathsf{rotl} \\ &&|& +\mathtt{0x78} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} \mathsf{rotr} \\ &&|& +\mathtt{0x79} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} \mathsf{clz} \\ &&|& +\mathtt{0x7A} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} \mathsf{ctz} \\ &&|& +\mathtt{0x7B} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} \mathsf{popcnt} \\ &&|& +\mathtt{0x7C} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} \mathsf{add} \\ &&|& +\mathtt{0x7D} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} \mathsf{sub} \\ &&|& +\mathtt{0x7E} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} \mathsf{mul} \\ &&|& +\mathtt{0x7F} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} ({\mathsf{div}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0x80} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} ({\mathsf{div}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0x81} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} ({\mathsf{rem}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0x82} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} ({\mathsf{rem}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0x83} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} \mathsf{and} \\ &&|& +\mathtt{0x84} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} \mathsf{or} \\ &&|& +\mathtt{0x85} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} \mathsf{xor} \\ &&|& +\mathtt{0x86} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} \mathsf{shl} \\ &&|& +\mathtt{0x87} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} ({\mathsf{shr}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0x88} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} ({\mathsf{shr}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0x89} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} \mathsf{rotl} \\ &&|& +\mathtt{0x8A} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} \mathsf{rotr} \\ &&|& +\mathtt{0x8B} &\Rightarrow& \mathsf{f{\scriptstyle 32}} {.} \mathsf{abs} \\ &&|& +\mathtt{0x8C} &\Rightarrow& \mathsf{f{\scriptstyle 32}} {.} \mathsf{neg} \\ &&|& +\mathtt{0x8D} &\Rightarrow& \mathsf{f{\scriptstyle 32}} {.} \mathsf{ceil} \\ &&|& +\mathtt{0x8E} &\Rightarrow& \mathsf{f{\scriptstyle 32}} {.} \mathsf{floor} \\ &&|& +\mathtt{0x8F} &\Rightarrow& \mathsf{f{\scriptstyle 32}} {.} \mathsf{trunc} \\ &&|& +\mathtt{0x90} &\Rightarrow& \mathsf{f{\scriptstyle 32}} {.} \mathsf{nearest} \\ &&|& +\mathtt{0x91} &\Rightarrow& \mathsf{f{\scriptstyle 32}} {.} \mathsf{sqrt} \\ &&|& +\mathtt{0x92} &\Rightarrow& \mathsf{f{\scriptstyle 32}} {.} \mathsf{add} \\ &&|& +\mathtt{0x93} &\Rightarrow& \mathsf{f{\scriptstyle 32}} {.} \mathsf{sub} \\ &&|& +\mathtt{0x94} &\Rightarrow& \mathsf{f{\scriptstyle 32}} {.} \mathsf{mul} \\ &&|& +\mathtt{0x95} &\Rightarrow& \mathsf{f{\scriptstyle 32}} {.} \mathsf{div} \\ &&|& +\mathtt{0x96} &\Rightarrow& \mathsf{f{\scriptstyle 32}} {.} \mathsf{min} \\ &&|& +\mathtt{0x97} &\Rightarrow& \mathsf{f{\scriptstyle 32}} {.} \mathsf{max} \\ &&|& +\mathtt{0x98} &\Rightarrow& \mathsf{f{\scriptstyle 32}} {.} \mathsf{copysign} \\ &&|& +\mathtt{0x99} &\Rightarrow& \mathsf{f{\scriptstyle 64}} {.} \mathsf{abs} \\ &&|& +\mathtt{0x9A} &\Rightarrow& \mathsf{f{\scriptstyle 64}} {.} \mathsf{neg} \\ &&|& +\mathtt{0x9B} &\Rightarrow& \mathsf{f{\scriptstyle 64}} {.} \mathsf{ceil} \\ &&|& +\mathtt{0x9C} &\Rightarrow& \mathsf{f{\scriptstyle 64}} {.} \mathsf{floor} \\ &&|& +\mathtt{0x9D} &\Rightarrow& \mathsf{f{\scriptstyle 64}} {.} \mathsf{trunc} \\ &&|& +\mathtt{0x9E} &\Rightarrow& \mathsf{f{\scriptstyle 64}} {.} \mathsf{nearest} \\ &&|& +\mathtt{0x9F} &\Rightarrow& \mathsf{f{\scriptstyle 64}} {.} \mathsf{sqrt} \\ &&|& +\mathtt{0xA0} &\Rightarrow& \mathsf{f{\scriptstyle 64}} {.} \mathsf{add} \\ &&|& +\mathtt{0xA1} &\Rightarrow& \mathsf{f{\scriptstyle 64}} {.} \mathsf{sub} \\ &&|& +\mathtt{0xA2} &\Rightarrow& \mathsf{f{\scriptstyle 64}} {.} \mathsf{mul} \\ &&|& +\mathtt{0xA3} &\Rightarrow& \mathsf{f{\scriptstyle 64}} {.} \mathsf{div} \\ &&|& +\mathtt{0xA4} &\Rightarrow& \mathsf{f{\scriptstyle 64}} {.} \mathsf{min} \\ &&|& +\mathtt{0xA5} &\Rightarrow& \mathsf{f{\scriptstyle 64}} {.} \mathsf{max} \\ &&|& +\mathtt{0xA6} &\Rightarrow& \mathsf{f{\scriptstyle 64}} {.} \mathsf{copysign} \\ &&|& \dots \\ \end{array} $$ @@ -8303,36 +8303,36 @@ $$ $$ \begin{array}{@{}l@{}rrlll@{}l@{}} & {\mathtt{instr}} &::=& \dots \\ &&|& -\mathtt{0xA7} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{i{\scriptstyle64}}} \\ &&|& -\mathtt{0xA8} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{f{\scriptstyle32}}} \\ &&|& -\mathtt{0xA9} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{f{\scriptstyle32}}} \\ &&|& -\mathtt{0xAA} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{f{\scriptstyle64}}} \\ &&|& -\mathtt{0xAB} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{f{\scriptstyle64}}} \\ &&|& -\mathtt{0xAC} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{i{\scriptstyle32}}} \\ &&|& -\mathtt{0xAD} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{i{\scriptstyle32}}} \\ &&|& -\mathtt{0xAE} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{f{\scriptstyle32}}} \\ &&|& -\mathtt{0xAF} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{f{\scriptstyle32}}} \\ &&|& -\mathtt{0xB0} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{f{\scriptstyle64}}} \\ &&|& -\mathtt{0xB1} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{f{\scriptstyle64}}} \\ &&|& -\mathtt{0xB2} &\Rightarrow& \mathsf{f{\scriptstyle32}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{i{\scriptstyle32}}} \\ &&|& -\mathtt{0xB3} &\Rightarrow& \mathsf{f{\scriptstyle32}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{i{\scriptstyle32}}} \\ &&|& -\mathtt{0xB4} &\Rightarrow& \mathsf{f{\scriptstyle32}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{i{\scriptstyle64}}} \\ &&|& -\mathtt{0xB5} &\Rightarrow& \mathsf{f{\scriptstyle32}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{i{\scriptstyle64}}} \\ &&|& -\mathtt{0xB6} &\Rightarrow& \mathsf{f{\scriptstyle32}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{f{\scriptstyle64}}} \\ &&|& -\mathtt{0xB7} &\Rightarrow& \mathsf{f{\scriptstyle64}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{i{\scriptstyle32}}} \\ &&|& -\mathtt{0xB8} &\Rightarrow& \mathsf{f{\scriptstyle64}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{i{\scriptstyle32}}} \\ &&|& -\mathtt{0xB9} &\Rightarrow& \mathsf{f{\scriptstyle64}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{i{\scriptstyle64}}} \\ &&|& -\mathtt{0xBA} &\Rightarrow& \mathsf{f{\scriptstyle64}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{i{\scriptstyle64}}} \\ &&|& -\mathtt{0xBB} &\Rightarrow& \mathsf{f{\scriptstyle64}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{f{\scriptstyle32}}} \\ &&|& -\mathtt{0xBC} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} {\mathsf{reinterpret}}{\mathsf{\_}}{\mathsf{f{\scriptstyle32}}} \\ &&|& -\mathtt{0xBD} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} {\mathsf{reinterpret}}{\mathsf{\_}}{\mathsf{f{\scriptstyle64}}} \\ &&|& -\mathtt{0xBE} &\Rightarrow& \mathsf{f{\scriptstyle32}} {.} {\mathsf{reinterpret}}{\mathsf{\_}}{\mathsf{i{\scriptstyle32}}} \\ &&|& -\mathtt{0xBF} &\Rightarrow& \mathsf{f{\scriptstyle64}} {.} {\mathsf{reinterpret}}{\mathsf{\_}}{\mathsf{i{\scriptstyle64}}} \\ &&|& -\mathtt{0xC0} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} (\mathsf{extend}~8) \\ &&|& -\mathtt{0xC1} &\Rightarrow& \mathsf{i{\scriptstyle32}} {.} (\mathsf{extend}~16) \\ &&|& -\mathtt{0xC2} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} (\mathsf{extend}~8) \\ &&|& -\mathtt{0xC3} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} (\mathsf{extend}~16) \\ &&|& -\mathtt{0xC4} &\Rightarrow& \mathsf{i{\scriptstyle64}} {.} (\mathsf{extend}~32) \\ &&|& +\mathtt{0xA7} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{i{\scriptstyle 64}}} \\ &&|& +\mathtt{0xA8} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 32}}} \\ &&|& +\mathtt{0xA9} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 32}}} \\ &&|& +\mathtt{0xAA} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 64}}} \\ &&|& +\mathtt{0xAB} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 64}}} \\ &&|& +\mathtt{0xAC} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{i{\scriptstyle 32}}} \\ &&|& +\mathtt{0xAD} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{i{\scriptstyle 32}}} \\ &&|& +\mathtt{0xAE} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 32}}} \\ &&|& +\mathtt{0xAF} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 32}}} \\ &&|& +\mathtt{0xB0} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 64}}} \\ &&|& +\mathtt{0xB1} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 64}}} \\ &&|& +\mathtt{0xB2} &\Rightarrow& \mathsf{f{\scriptstyle 32}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{i{\scriptstyle 32}}} \\ &&|& +\mathtt{0xB3} &\Rightarrow& \mathsf{f{\scriptstyle 32}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{i{\scriptstyle 32}}} \\ &&|& +\mathtt{0xB4} &\Rightarrow& \mathsf{f{\scriptstyle 32}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{i{\scriptstyle 64}}} \\ &&|& +\mathtt{0xB5} &\Rightarrow& \mathsf{f{\scriptstyle 32}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{i{\scriptstyle 64}}} \\ &&|& +\mathtt{0xB6} &\Rightarrow& \mathsf{f{\scriptstyle 32}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 64}}} \\ &&|& +\mathtt{0xB7} &\Rightarrow& \mathsf{f{\scriptstyle 64}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{i{\scriptstyle 32}}} \\ &&|& +\mathtt{0xB8} &\Rightarrow& \mathsf{f{\scriptstyle 64}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{i{\scriptstyle 32}}} \\ &&|& +\mathtt{0xB9} &\Rightarrow& \mathsf{f{\scriptstyle 64}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{i{\scriptstyle 64}}} \\ &&|& +\mathtt{0xBA} &\Rightarrow& \mathsf{f{\scriptstyle 64}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{i{\scriptstyle 64}}} \\ &&|& +\mathtt{0xBB} &\Rightarrow& \mathsf{f{\scriptstyle 64}} {.} {\mathsf{convert}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 32}}} \\ &&|& +\mathtt{0xBC} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} {\mathsf{reinterpret}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 32}}} \\ &&|& +\mathtt{0xBD} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} {\mathsf{reinterpret}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 64}}} \\ &&|& +\mathtt{0xBE} &\Rightarrow& \mathsf{f{\scriptstyle 32}} {.} {\mathsf{reinterpret}}{\mathsf{\_}}{\mathsf{i{\scriptstyle 32}}} \\ &&|& +\mathtt{0xBF} &\Rightarrow& \mathsf{f{\scriptstyle 64}} {.} {\mathsf{reinterpret}}{\mathsf{\_}}{\mathsf{i{\scriptstyle 64}}} \\ &&|& +\mathtt{0xC0} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} (\mathsf{extend}~8) \\ &&|& +\mathtt{0xC1} &\Rightarrow& \mathsf{i{\scriptstyle 32}} {.} (\mathsf{extend}~16) \\ &&|& +\mathtt{0xC2} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} (\mathsf{extend}~8) \\ &&|& +\mathtt{0xC3} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} (\mathsf{extend}~16) \\ &&|& +\mathtt{0xC4} &\Rightarrow& \mathsf{i{\scriptstyle 64}} {.} (\mathsf{extend}~32) \\ &&|& \dots \\ \end{array} $$ @@ -8343,243 +8343,243 @@ $$ \begin{array}{@{}l@{}rrlll@{}l@{}} & {\mathtt{laneidx}} &::=& l{:}{\mathtt{byte}} &\Rightarrow& l \\ & {\mathtt{instr}} &::=& \dots \\ &&|& -\mathtt{0xFD}~0{:}{\mathtt{u{\scriptstyle32}}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& \mathsf{v{\scriptstyle128}}{.}\mathsf{load}~x~{\mathit{ao}} \\ &&|& -\mathtt{0xFD}~1{:}{\mathtt{u{\scriptstyle32}}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{v{\scriptstyle128}}{.}\mathsf{load}}{{\mathsf{shape}}{8}{\mathsf{x}}{8}{\mathsf{s}}}~x~{\mathit{ao}} \\ &&|& -\mathtt{0xFD}~2{:}{\mathtt{u{\scriptstyle32}}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{v{\scriptstyle128}}{.}\mathsf{load}}{{\mathsf{shape}}{8}{\mathsf{x}}{8}{\mathsf{u}}}~x~{\mathit{ao}} \\ &&|& -\mathtt{0xFD}~3{:}{\mathtt{u{\scriptstyle32}}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{v{\scriptstyle128}}{.}\mathsf{load}}{{\mathsf{shape}}{16}{\mathsf{x}}{4}{\mathsf{s}}}~x~{\mathit{ao}} \\ &&|& -\mathtt{0xFD}~4{:}{\mathtt{u{\scriptstyle32}}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{v{\scriptstyle128}}{.}\mathsf{load}}{{\mathsf{shape}}{16}{\mathsf{x}}{4}{\mathsf{u}}}~x~{\mathit{ao}} \\ &&|& -\mathtt{0xFD}~5{:}{\mathtt{u{\scriptstyle32}}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{v{\scriptstyle128}}{.}\mathsf{load}}{{\mathsf{shape}}{32}{\mathsf{x}}{2}{\mathsf{s}}}~x~{\mathit{ao}} \\ &&|& -\mathtt{0xFD}~6{:}{\mathtt{u{\scriptstyle32}}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{v{\scriptstyle128}}{.}\mathsf{load}}{{\mathsf{shape}}{32}{\mathsf{x}}{2}{\mathsf{u}}}~x~{\mathit{ao}} \\ &&|& -\mathtt{0xFD}~7{:}{\mathtt{u{\scriptstyle32}}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{v{\scriptstyle128}}{.}\mathsf{load}}{{\mathsf{splat}}{8}}~x~{\mathit{ao}} \\ &&|& -\mathtt{0xFD}~8{:}{\mathtt{u{\scriptstyle32}}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{v{\scriptstyle128}}{.}\mathsf{load}}{{\mathsf{splat}}{16}}~x~{\mathit{ao}} \\ &&|& -\mathtt{0xFD}~9{:}{\mathtt{u{\scriptstyle32}}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{v{\scriptstyle128}}{.}\mathsf{load}}{{\mathsf{splat}}{32}}~x~{\mathit{ao}} \\ &&|& -\mathtt{0xFD}~10{:}{\mathtt{u{\scriptstyle32}}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{v{\scriptstyle128}}{.}\mathsf{load}}{{\mathsf{splat}}{64}}~x~{\mathit{ao}} \\ &&|& -\mathtt{0xFD}~92{:}{\mathtt{u{\scriptstyle32}}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{v{\scriptstyle128}}{.}\mathsf{load}}{{\mathsf{zero}}{32}}~x~{\mathit{ao}} \\ &&|& -\mathtt{0xFD}~92{:}{\mathtt{u{\scriptstyle32}}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{v{\scriptstyle128}}{.}\mathsf{load}}{{\mathsf{zero}}{64}}~x~{\mathit{ao}} \\ &&|& -\mathtt{0xFD}~11{:}{\mathtt{u{\scriptstyle32}}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& \mathsf{v{\scriptstyle128}}{.}\mathsf{store}~x~{\mathit{ao}} \\ &&|& -\mathtt{0xFD}~84{:}{\mathtt{u{\scriptstyle32}}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {\mathsf{v{\scriptstyle128}}{.}\mathsf{load}}{8}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{ao}}~l \\ &&|& -\mathtt{0xFD}~85{:}{\mathtt{u{\scriptstyle32}}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {\mathsf{v{\scriptstyle128}}{.}\mathsf{load}}{16}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{ao}}~l \\ &&|& -\mathtt{0xFD}~86{:}{\mathtt{u{\scriptstyle32}}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {\mathsf{v{\scriptstyle128}}{.}\mathsf{load}}{32}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{ao}}~l \\ &&|& -\mathtt{0xFD}~87{:}{\mathtt{u{\scriptstyle32}}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {\mathsf{v{\scriptstyle128}}{.}\mathsf{load}}{64}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{ao}}~l \\ &&|& -\mathtt{0xFD}~88{:}{\mathtt{u{\scriptstyle32}}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {\mathsf{v{\scriptstyle128}}{.}\mathsf{store}}{8}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{ao}}~l \\ &&|& -\mathtt{0xFD}~89{:}{\mathtt{u{\scriptstyle32}}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {\mathsf{v{\scriptstyle128}}{.}\mathsf{store}}{16}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{ao}}~l \\ &&|& -\mathtt{0xFD}~90{:}{\mathtt{u{\scriptstyle32}}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {\mathsf{v{\scriptstyle128}}{.}\mathsf{store}}{32}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{ao}}~l \\ &&|& -\mathtt{0xFD}~91{:}{\mathtt{u{\scriptstyle32}}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {\mathsf{v{\scriptstyle128}}{.}\mathsf{store}}{64}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{ao}}~l \\ &&|& -\mathtt{0xFD}~12{:}{\mathtt{u{\scriptstyle32}}}~{(b{:}{\mathtt{byte}})^{16}} &\Rightarrow& \mathsf{v{\scriptstyle128}}{.}\mathsf{const}~{b'} +\mathtt{0xFD}~0{:}{\mathtt{u32}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& \mathsf{v{\scriptstyle 128}}{.}\mathsf{load}~x~{\mathit{ao}} \\ &&|& +\mathtt{0xFD}~1{:}{\mathtt{u32}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{8}{\mathsf{x}}{8}{\mathsf{\_}}{\mathsf{s}}}~x~{\mathit{ao}} \\ &&|& +\mathtt{0xFD}~2{:}{\mathtt{u32}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{8}{\mathsf{x}}{8}{\mathsf{\_}}{\mathsf{u}}}~x~{\mathit{ao}} \\ &&|& +\mathtt{0xFD}~3{:}{\mathtt{u32}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{16}{\mathsf{x}}{4}{\mathsf{\_}}{\mathsf{s}}}~x~{\mathit{ao}} \\ &&|& +\mathtt{0xFD}~4{:}{\mathtt{u32}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{16}{\mathsf{x}}{4}{\mathsf{\_}}{\mathsf{u}}}~x~{\mathit{ao}} \\ &&|& +\mathtt{0xFD}~5{:}{\mathtt{u32}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{32}{\mathsf{x}}{2}{\mathsf{\_}}{\mathsf{s}}}~x~{\mathit{ao}} \\ &&|& +\mathtt{0xFD}~6{:}{\mathtt{u32}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{32}{\mathsf{x}}{2}{\mathsf{\_}}{\mathsf{u}}}~x~{\mathit{ao}} \\ &&|& +\mathtt{0xFD}~7{:}{\mathtt{u32}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{8}{\mathsf{\_}}{\mathsf{splat}}}~x~{\mathit{ao}} \\ &&|& +\mathtt{0xFD}~8{:}{\mathtt{u32}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{16}{\mathsf{\_}}{\mathsf{splat}}}~x~{\mathit{ao}} \\ &&|& +\mathtt{0xFD}~9{:}{\mathtt{u32}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{32}{\mathsf{\_}}{\mathsf{splat}}}~x~{\mathit{ao}} \\ &&|& +\mathtt{0xFD}~10{:}{\mathtt{u32}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{64}{\mathsf{\_}}{\mathsf{splat}}}~x~{\mathit{ao}} \\ &&|& +\mathtt{0xFD}~92{:}{\mathtt{u32}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{32}{\mathsf{\_}}{\mathsf{zero}}}~x~{\mathit{ao}} \\ &&|& +\mathtt{0xFD}~92{:}{\mathtt{u32}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& {\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{64}{\mathsf{\_}}{\mathsf{zero}}}~x~{\mathit{ao}} \\ &&|& +\mathtt{0xFD}~11{:}{\mathtt{u32}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}} &\Rightarrow& \mathsf{v{\scriptstyle 128}}{.}\mathsf{store}~x~{\mathit{ao}} \\ &&|& +\mathtt{0xFD}~84{:}{\mathtt{u32}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{8}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{ao}}~l \\ &&|& +\mathtt{0xFD}~85{:}{\mathtt{u32}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{16}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{ao}}~l \\ &&|& +\mathtt{0xFD}~86{:}{\mathtt{u32}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{32}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{ao}}~l \\ &&|& +\mathtt{0xFD}~87{:}{\mathtt{u32}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{64}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{ao}}~l \\ &&|& +\mathtt{0xFD}~88{:}{\mathtt{u32}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {\mathsf{v{\scriptstyle 128}}{.}\mathsf{store}}{8}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{ao}}~l \\ &&|& +\mathtt{0xFD}~89{:}{\mathtt{u32}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {\mathsf{v{\scriptstyle 128}}{.}\mathsf{store}}{16}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{ao}}~l \\ &&|& +\mathtt{0xFD}~90{:}{\mathtt{u32}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {\mathsf{v{\scriptstyle 128}}{.}\mathsf{store}}{32}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{ao}}~l \\ &&|& +\mathtt{0xFD}~91{:}{\mathtt{u32}}~(x,\, {\mathit{ao}}){:}{\mathtt{memarg}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {\mathsf{v{\scriptstyle 128}}{.}\mathsf{store}}{64}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{ao}}~l \\ &&|& +\mathtt{0xFD}~12{:}{\mathtt{u32}}~{(b{:}{\mathtt{byte}})^{16}} &\Rightarrow& \mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~{b'} &\qquad \mbox{if}~{{\mathrm{bytes}}}_{{\mathsf{i}}{128}}({b'}) = b \\ &&|& -\mathtt{0xFD}~13{:}{\mathtt{u{\scriptstyle32}}}~{(l{:}{\mathtt{laneidx}})^{16}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}){.}\mathsf{shuffle}~l \\ &&|& -\mathtt{0xFD}~21{:}{\mathtt{u{\scriptstyle32}}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}){.}\mathsf{extract\_lane}}{\mathsf{\_}}{\mathsf{s}}~l \\ &&|& -\mathtt{0xFD}~22{:}{\mathtt{u{\scriptstyle32}}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}){.}\mathsf{extract\_lane}}{\mathsf{\_}}{\mathsf{u}}~l \\ &&|& -\mathtt{0xFD}~23{:}{\mathtt{u{\scriptstyle32}}}~l{:}{\mathtt{laneidx}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}){.}\mathsf{replace\_lane}~l \\ &&|& -\mathtt{0xFD}~24{:}{\mathtt{u{\scriptstyle32}}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}){.}\mathsf{extract\_lane}}{\mathsf{\_}}{\mathsf{s}}~l \\ &&|& -\mathtt{0xFD}~25{:}{\mathtt{u{\scriptstyle32}}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}){.}\mathsf{extract\_lane}}{\mathsf{\_}}{\mathsf{u}}~l \\ &&|& -\mathtt{0xFD}~26{:}{\mathtt{u{\scriptstyle32}}}~l{:}{\mathtt{laneidx}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}){.}\mathsf{replace\_lane}~l \\ &&|& -\mathtt{0xFD}~27{:}{\mathtt{u{\scriptstyle32}}}~l{:}{\mathtt{laneidx}} &\Rightarrow& \mathsf{vextract\_lane}~({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4})~l \\ &&|& -\mathtt{0xFD}~28{:}{\mathtt{u{\scriptstyle32}}}~l{:}{\mathtt{laneidx}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}){.}\mathsf{replace\_lane}~l \\ &&|& -\mathtt{0xFD}~29{:}{\mathtt{u{\scriptstyle32}}}~l{:}{\mathtt{laneidx}} &\Rightarrow& \mathsf{vextract\_lane}~({\mathsf{i{\scriptstyle64}}}{\mathsf{x}}{2})~l \\ &&|& -\mathtt{0xFD}~30{:}{\mathtt{u{\scriptstyle32}}}~l{:}{\mathtt{laneidx}} &\Rightarrow& ({\mathsf{i{\scriptstyle64}}}{\mathsf{x}}{2}){.}\mathsf{replace\_lane}~l \\ &&|& -\mathtt{0xFD}~31{:}{\mathtt{u{\scriptstyle32}}}~l{:}{\mathtt{laneidx}} &\Rightarrow& \mathsf{vextract\_lane}~({\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4})~l \\ &&|& -\mathtt{0xFD}~32{:}{\mathtt{u{\scriptstyle32}}}~l{:}{\mathtt{laneidx}} &\Rightarrow& ({\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4}){.}\mathsf{replace\_lane}~l \\ &&|& -\mathtt{0xFD}~33{:}{\mathtt{u{\scriptstyle32}}}~l{:}{\mathtt{laneidx}} &\Rightarrow& \mathsf{vextract\_lane}~({\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2})~l \\ &&|& -\mathtt{0xFD}~34{:}{\mathtt{u{\scriptstyle32}}}~l{:}{\mathtt{laneidx}} &\Rightarrow& ({\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2}){.}\mathsf{replace\_lane}~l \\ &&|& -\mathtt{0xFD}~14{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}){.}\mathsf{swizzle} \\ &&|& -\mathtt{0xFD}~15{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}){.}\mathsf{splat} \\ &&|& -\mathtt{0xFD}~16{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}){.}\mathsf{splat} \\ &&|& -\mathtt{0xFD}~17{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}){.}\mathsf{splat} \\ &&|& -\mathtt{0xFD}~18{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle64}}}{\mathsf{x}}{2}){.}\mathsf{splat} \\ &&|& -\mathtt{0xFD}~19{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4}){.}\mathsf{splat} \\ &&|& -\mathtt{0xFD}~20{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2}){.}\mathsf{splat} \\ &&|& -\mathtt{0xFD}~35{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}) {.} \mathsf{eq} \\ &&|& -\mathtt{0xFD}~36{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}) {.} \mathsf{ne} \\ &&|& -\mathtt{0xFD}~37{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}) {.} ({\mathsf{lt}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~38{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}) {.} ({\mathsf{lt}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0xFD}~39{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}) {.} ({\mathsf{gt}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~40{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}) {.} ({\mathsf{gt}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0xFD}~41{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}) {.} ({\mathsf{le}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~42{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}) {.} ({\mathsf{le}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0xFD}~43{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}) {.} ({\mathsf{ge}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~44{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}) {.} ({\mathsf{ge}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0xFD}~45{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} \mathsf{eq} \\ &&|& -\mathtt{0xFD}~46{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} \mathsf{ne} \\ &&|& -\mathtt{0xFD}~47{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} ({\mathsf{lt}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~48{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} ({\mathsf{lt}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0xFD}~49{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} ({\mathsf{gt}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~50{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} ({\mathsf{gt}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0xFD}~51{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} ({\mathsf{le}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~52{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} ({\mathsf{le}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0xFD}~53{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} ({\mathsf{ge}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~54{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} ({\mathsf{ge}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0xFD}~55{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{eq} \\ &&|& -\mathtt{0xFD}~56{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{ne} \\ &&|& -\mathtt{0xFD}~57{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} ({\mathsf{lt}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~58{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} ({\mathsf{lt}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0xFD}~59{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} ({\mathsf{gt}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~60{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} ({\mathsf{gt}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0xFD}~61{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} ({\mathsf{le}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~62{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} ({\mathsf{le}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0xFD}~63{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} ({\mathsf{ge}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~64{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} ({\mathsf{ge}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0xFD}~214{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{eq} \\ &&|& -\mathtt{0xFD}~215{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{ne} \\ &&|& -\mathtt{0xFD}~216{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle64}}}{\mathsf{x}}{2}) {.} ({\mathsf{lt}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~217{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle64}}}{\mathsf{x}}{2}) {.} ({\mathsf{gt}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~218{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle64}}}{\mathsf{x}}{2}) {.} ({\mathsf{le}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~219{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle64}}}{\mathsf{x}}{2}) {.} ({\mathsf{ge}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~65{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{eq} \\ &&|& -\mathtt{0xFD}~66{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{ne} \\ &&|& -\mathtt{0xFD}~67{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{lt} \\ &&|& -\mathtt{0xFD}~68{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{gt} \\ &&|& -\mathtt{0xFD}~69{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{le} \\ &&|& -\mathtt{0xFD}~70{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{ge} \\ &&|& -\mathtt{0xFD}~71{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{eq} \\ &&|& -\mathtt{0xFD}~72{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{ne} \\ &&|& -\mathtt{0xFD}~73{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{lt} \\ &&|& -\mathtt{0xFD}~74{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{gt} \\ &&|& -\mathtt{0xFD}~75{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{le} \\ &&|& -\mathtt{0xFD}~76{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{ge} \\ &&|& -\mathtt{0xFD}~77{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& \mathsf{v{\scriptstyle128}} {.} \mathsf{not} \\ &&|& -\mathtt{0xFD}~78{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& \mathsf{v{\scriptstyle128}} {.} \mathsf{and} \\ &&|& -\mathtt{0xFD}~79{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& \mathsf{v{\scriptstyle128}} {.} \mathsf{andnot} \\ &&|& -\mathtt{0xFD}~80{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& \mathsf{v{\scriptstyle128}} {.} \mathsf{or} \\ &&|& -\mathtt{0xFD}~81{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& \mathsf{v{\scriptstyle128}} {.} \mathsf{xor} \\ &&|& -\mathtt{0xFD}~82{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& \mathsf{v{\scriptstyle128}} {.} \mathsf{bitselect} \\ &&|& -\mathtt{0xFD}~83{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& \mathsf{v{\scriptstyle128}} {.} \mathsf{any\_true} \\ &&|& -\mathtt{0xFD}~96{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}) {.} \mathsf{abs} \\ &&|& -\mathtt{0xFD}~97{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}) {.} \mathsf{neg} \\ &&|& -\mathtt{0xFD}~98{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}) {.} \mathsf{popcnt} \\ &&|& -\mathtt{0xFD}~99{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}) {.} \mathsf{all\_true} \\ &&|& -\mathtt{0xFD}~100{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}){.}\mathsf{bitmask} \\ &&|& -\mathtt{0xFD}~101{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& {({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}){.}\mathsf{narrow}}{\mathsf{\_}}{({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8})}{\mathsf{\_}}{\mathsf{s}} \\ &&|& -\mathtt{0xFD}~102{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& {({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}){.}\mathsf{narrow}}{\mathsf{\_}}{({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8})}{\mathsf{\_}}{\mathsf{u}} \\ &&|& -\mathtt{0xFD}~107{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}) {.} \mathsf{shl} \\ &&|& -\mathtt{0xFD}~108{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}) {.} ({\mathsf{shr}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~109{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}) {.} ({\mathsf{shr}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0xFD}~110{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}) {.} \mathsf{add} \\ &&|& -\mathtt{0xFD}~111{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}) {.} ({\mathsf{add\_sat}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~112{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}) {.} ({\mathsf{add\_sat}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0xFD}~113{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}) {.} \mathsf{sub} \\ &&|& -\mathtt{0xFD}~114{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}) {.} ({\mathsf{sub\_sat}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~115{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}) {.} ({\mathsf{sub\_sat}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0xFD}~118{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}) {.} ({\mathsf{min}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~119{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}) {.} ({\mathsf{min}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0xFD}~120{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}) {.} ({\mathsf{max}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~121{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}) {.} ({\mathsf{max}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0xFD}~123{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}) {.} \mathsf{avgr\_u} \\ &&|& -\mathtt{0xFD}~124{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} {\mathsf{extadd\_pairwise}}{\mathsf{\_}}{({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16})}{\mathsf{\_}}{\mathsf{s}} \\ &&|& -\mathtt{0xFD}~125{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} {\mathsf{extadd\_pairwise}}{\mathsf{\_}}{({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16})}{\mathsf{\_}}{\mathsf{u}} \\ &&|& -\mathtt{0xFD}~128{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} \mathsf{abs} \\ &&|& -\mathtt{0xFD}~129{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} \mathsf{neg} \\ &&|& -\mathtt{0xFD}~130{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} \mathsf{q{\scriptstyle15}mulr\_sat\_s} \\ &&|& -\mathtt{0xFD}~131{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} \mathsf{all\_true} \\ &&|& -\mathtt{0xFD}~132{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}){.}\mathsf{bitmask} \\ &&|& -\mathtt{0xFD}~133{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& {({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}){.}\mathsf{narrow}}{\mathsf{\_}}{({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4})}{\mathsf{\_}}{\mathsf{s}} \\ &&|& -\mathtt{0xFD}~134{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& {({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}){.}\mathsf{narrow}}{\mathsf{\_}}{({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4})}{\mathsf{\_}}{\mathsf{u}} \\ &&|& -\mathtt{0xFD}~135{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} {\mathsf{extend}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}} \\ &&|& -\mathtt{0xFD}~136{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} {\mathsf{extend}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}} \\ &&|& -\mathtt{0xFD}~137{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} {\mathsf{extend}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}} \\ &&|& -\mathtt{0xFD}~138{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} {\mathsf{extend}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16}} \\ &&|& -\mathtt{0xFD}~139{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} \mathsf{shl} \\ &&|& -\mathtt{0xFD}~140{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} ({\mathsf{shr}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~141{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} ({\mathsf{shr}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0xFD}~142{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} \mathsf{add} \\ &&|& -\mathtt{0xFD}~143{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} ({\mathsf{add\_sat}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~144{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} ({\mathsf{add\_sat}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0xFD}~145{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} \mathsf{sub} \\ &&|& -\mathtt{0xFD}~146{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} ({\mathsf{sub\_sat}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~147{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} ({\mathsf{sub\_sat}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0xFD}~149{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} \mathsf{mul} \\ &&|& -\mathtt{0xFD}~150{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} ({\mathsf{min}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~151{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} ({\mathsf{min}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0xFD}~152{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} ({\mathsf{max}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~153{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} ({\mathsf{max}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0xFD}~155{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} \mathsf{avgr\_u} \\ &&|& -\mathtt{0xFD}~156{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} {({\mathsf{extmul}}{\mathsf{\_}}{\mathsf{low}})}{\mathsf{\_}}{({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16})}{\mathsf{\_}}{\mathsf{s}} \\ &&|& -\mathtt{0xFD}~157{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} {({\mathsf{extmul}}{\mathsf{\_}}{\mathsf{high}})}{\mathsf{\_}}{({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16})}{\mathsf{\_}}{\mathsf{s}} \\ &&|& -\mathtt{0xFD}~158{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} {({\mathsf{extmul}}{\mathsf{\_}}{\mathsf{low}})}{\mathsf{\_}}{({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16})}{\mathsf{\_}}{\mathsf{u}} \\ &&|& -\mathtt{0xFD}~159{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}) {.} {({\mathsf{extmul}}{\mathsf{\_}}{\mathsf{high}})}{\mathsf{\_}}{({\mathsf{i{\scriptstyle8}}}{\mathsf{x}}{16})}{\mathsf{\_}}{\mathsf{u}} \\ &&|& -\mathtt{0xFD}~126{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} {\mathsf{extadd\_pairwise}}{\mathsf{\_}}{({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8})}{\mathsf{\_}}{\mathsf{s}} \\ &&|& -\mathtt{0xFD}~127{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} {\mathsf{extadd\_pairwise}}{\mathsf{\_}}{({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8})}{\mathsf{\_}}{\mathsf{u}} \\ &&|& -\mathtt{0xFD}~160{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{abs} \\ &&|& -\mathtt{0xFD}~161{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{neg} \\ &&|& -\mathtt{0xFD}~163{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{all\_true} \\ &&|& -\mathtt{0xFD}~164{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}){.}\mathsf{bitmask} \\ &&|& -\mathtt{0xFD}~167{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} {\mathsf{extend}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}} \\ &&|& -\mathtt{0xFD}~168{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} {\mathsf{extend}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}} \\ &&|& -\mathtt{0xFD}~169{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} {\mathsf{extend}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}} \\ &&|& -\mathtt{0xFD}~170{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} {\mathsf{extend}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8}} \\ &&|& -\mathtt{0xFD}~171{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{shl} \\ &&|& -\mathtt{0xFD}~172{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} ({\mathsf{shr}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~173{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} ({\mathsf{shr}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0xFD}~174{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{add} \\ &&|& -\mathtt{0xFD}~177{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{sub} \\ &&|& -\mathtt{0xFD}~181{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{mul} \\ &&|& -\mathtt{0xFD}~182{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} ({\mathsf{min}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~183{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} ({\mathsf{min}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0xFD}~184{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} ({\mathsf{max}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~185{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} ({\mathsf{max}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0xFD}~186{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} {\mathsf{dot}}{\mathsf{\_}}{({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8})}{\mathsf{\_}}{\mathsf{s}} \\ &&|& -\mathtt{0xFD}~188{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} {({\mathsf{extmul}}{\mathsf{\_}}{\mathsf{low}})}{\mathsf{\_}}{({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8})}{\mathsf{\_}}{\mathsf{s}} \\ &&|& -\mathtt{0xFD}~189{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} {({\mathsf{extmul}}{\mathsf{\_}}{\mathsf{high}})}{\mathsf{\_}}{({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8})}{\mathsf{\_}}{\mathsf{s}} \\ &&|& -\mathtt{0xFD}~190{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} {({\mathsf{extmul}}{\mathsf{\_}}{\mathsf{low}})}{\mathsf{\_}}{({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8})}{\mathsf{\_}}{\mathsf{u}} \\ &&|& -\mathtt{0xFD}~191{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} {({\mathsf{extmul}}{\mathsf{\_}}{\mathsf{high}})}{\mathsf{\_}}{({\mathsf{i{\scriptstyle16}}}{\mathsf{x}}{8})}{\mathsf{\_}}{\mathsf{u}} \\ &&|& -\mathtt{0xFD}~192{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{abs} \\ &&|& -\mathtt{0xFD}~193{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{neg} \\ &&|& -\mathtt{0xFD}~195{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{all\_true} \\ &&|& -\mathtt{0xFD}~196{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle64}}}{\mathsf{x}}{2}){.}\mathsf{bitmask} \\ &&|& -\mathtt{0xFD}~199{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle64}}}{\mathsf{x}}{2}) {.} {\mathsf{extend}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}} \\ &&|& -\mathtt{0xFD}~200{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle64}}}{\mathsf{x}}{2}) {.} {\mathsf{extend}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}} \\ &&|& -\mathtt{0xFD}~201{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle64}}}{\mathsf{x}}{2}) {.} {\mathsf{extend}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}} \\ &&|& -\mathtt{0xFD}~202{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle64}}}{\mathsf{x}}{2}) {.} {\mathsf{extend}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}} \\ &&|& -\mathtt{0xFD}~203{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{shl} \\ &&|& -\mathtt{0xFD}~204{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle64}}}{\mathsf{x}}{2}) {.} ({\mathsf{shr}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& -\mathtt{0xFD}~205{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle64}}}{\mathsf{x}}{2}) {.} ({\mathsf{shr}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& -\mathtt{0xFD}~206{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{add} \\ &&|& -\mathtt{0xFD}~209{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{sub} \\ &&|& -\mathtt{0xFD}~213{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{mul} \\ &&|& -\mathtt{0xFD}~220{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle64}}}{\mathsf{x}}{2}) {.} {({\mathsf{extmul}}{\mathsf{\_}}{\mathsf{low}})}{\mathsf{\_}}{({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4})}{\mathsf{\_}}{\mathsf{s}} \\ &&|& -\mathtt{0xFD}~221{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle64}}}{\mathsf{x}}{2}) {.} {({\mathsf{extmul}}{\mathsf{\_}}{\mathsf{high}})}{\mathsf{\_}}{({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4})}{\mathsf{\_}}{\mathsf{s}} \\ &&|& -\mathtt{0xFD}~222{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle64}}}{\mathsf{x}}{2}) {.} {({\mathsf{extmul}}{\mathsf{\_}}{\mathsf{low}})}{\mathsf{\_}}{({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4})}{\mathsf{\_}}{\mathsf{u}} \\ &&|& -\mathtt{0xFD}~223{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle64}}}{\mathsf{x}}{2}) {.} {({\mathsf{extmul}}{\mathsf{\_}}{\mathsf{high}})}{\mathsf{\_}}{({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4})}{\mathsf{\_}}{\mathsf{u}} \\ &&|& -\mathtt{0xFD}~103{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{ceil} \\ &&|& -\mathtt{0xFD}~104{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{floor} \\ &&|& -\mathtt{0xFD}~105{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{trunc} \\ &&|& -\mathtt{0xFD}~106{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{nearest} \\ &&|& -\mathtt{0xFD}~224{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{abs} \\ &&|& -\mathtt{0xFD}~225{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{neg} \\ &&|& -\mathtt{0xFD}~227{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{sqrt} \\ &&|& -\mathtt{0xFD}~228{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{add} \\ &&|& -\mathtt{0xFD}~229{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{sub} \\ &&|& -\mathtt{0xFD}~230{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{mul} \\ &&|& -\mathtt{0xFD}~231{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{div} \\ &&|& -\mathtt{0xFD}~232{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{min} \\ &&|& -\mathtt{0xFD}~233{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{max} \\ &&|& -\mathtt{0xFD}~234{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{pmin} \\ &&|& -\mathtt{0xFD}~235{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4}) {.} \mathsf{pmax} \\ &&|& -\mathtt{0xFD}~116{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{ceil} \\ &&|& -\mathtt{0xFD}~117{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{floor} \\ &&|& -\mathtt{0xFD}~122{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{trunc} \\ &&|& -\mathtt{0xFD}~148{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{nearest} \\ &&|& -\mathtt{0xFD}~236{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{abs} \\ &&|& -\mathtt{0xFD}~237{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{neg} \\ &&|& -\mathtt{0xFD}~239{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{sqrt} \\ &&|& -\mathtt{0xFD}~240{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{add} \\ &&|& -\mathtt{0xFD}~241{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{sub} \\ &&|& -\mathtt{0xFD}~242{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{mul} \\ &&|& -\mathtt{0xFD}~243{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{div} \\ &&|& -\mathtt{0xFD}~244{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{min} \\ &&|& -\mathtt{0xFD}~245{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{max} \\ &&|& -\mathtt{0xFD}~246{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{pmin} \\ &&|& -\mathtt{0xFD}~247{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2}) {.} \mathsf{pmax} \\ &&|& -\mathtt{0xFD}~248{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} {\mathsf{trunc\_sat}}{\mathsf{\_}}{{\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4}} \\ &&|& -\mathtt{0xFD}~249{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} {\mathsf{trunc\_sat}}{\mathsf{\_}}{{\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4}} \\ &&|& -\mathtt{0xFD}~250{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4}) {.} {\mathsf{convert}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}} \\ &&|& -\mathtt{0xFD}~251{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4}) {.} {\mathsf{convert}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}} \\ &&|& -\mathtt{0xFD}~252{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} {\mathsf{trunc\_sat}}{\mathsf{\_}}{{\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2}} \\ &&|& -\mathtt{0xFD}~253{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}) {.} {\mathsf{trunc\_sat}}{\mathsf{\_}}{{\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2}} \\ &&|& -\mathtt{0xFD}~254{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2}) {.} {\mathsf{convert}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}} \\ &&|& -\mathtt{0xFD}~255{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2}) {.} {\mathsf{convert}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle32}}}{\mathsf{x}}{4}} \\ &&|& -\mathtt{0xFD}~94{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4}) {.} {\mathsf{demote}}{\mathsf{\_}}{{\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2}} \\ &&|& -\mathtt{0xFD}~95{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& ({\mathsf{f{\scriptstyle64}}}{\mathsf{x}}{2}) {.} {\mathsf{promote}}{\mathsf{\_}}{{\mathsf{f{\scriptstyle32}}}{\mathsf{x}}{4}} \\ +\mathtt{0xFD}~13{:}{\mathtt{u32}}~{(l{:}{\mathtt{laneidx}})^{16}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16}{.}\mathsf{shuffle}~l \\ &&|& +\mathtt{0xFD}~21{:}{\mathtt{u32}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {{\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16}{.}\mathsf{extract\_lane}}{\mathsf{\_}}{\mathsf{s}}~l \\ &&|& +\mathtt{0xFD}~22{:}{\mathtt{u32}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {{\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16}{.}\mathsf{extract\_lane}}{\mathsf{\_}}{\mathsf{u}}~l \\ &&|& +\mathtt{0xFD}~23{:}{\mathtt{u32}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16}{.}\mathsf{replace\_lane}~l \\ &&|& +\mathtt{0xFD}~24{:}{\mathtt{u32}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {{\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8}{.}\mathsf{extract\_lane}}{\mathsf{\_}}{\mathsf{s}}~l \\ &&|& +\mathtt{0xFD}~25{:}{\mathtt{u32}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {{\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8}{.}\mathsf{extract\_lane}}{\mathsf{\_}}{\mathsf{u}}~l \\ &&|& +\mathtt{0xFD}~26{:}{\mathtt{u32}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8}{.}\mathsf{replace\_lane}~l \\ &&|& +\mathtt{0xFD}~27{:}{\mathtt{u32}}~l{:}{\mathtt{laneidx}} &\Rightarrow& \mathsf{vextract\_lane}~({\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4})~l \\ &&|& +\mathtt{0xFD}~28{:}{\mathtt{u32}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4}{.}\mathsf{replace\_lane}~l \\ &&|& +\mathtt{0xFD}~29{:}{\mathtt{u32}}~l{:}{\mathtt{laneidx}} &\Rightarrow& \mathsf{vextract\_lane}~({\mathsf{i{\scriptstyle 64}}}{\mathsf{x}}{2})~l \\ &&|& +\mathtt{0xFD}~30{:}{\mathtt{u32}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}}{\mathsf{x}}{2}{.}\mathsf{replace\_lane}~l \\ &&|& +\mathtt{0xFD}~31{:}{\mathtt{u32}}~l{:}{\mathtt{laneidx}} &\Rightarrow& \mathsf{vextract\_lane}~({\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4})~l \\ &&|& +\mathtt{0xFD}~32{:}{\mathtt{u32}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4}{.}\mathsf{replace\_lane}~l \\ &&|& +\mathtt{0xFD}~33{:}{\mathtt{u32}}~l{:}{\mathtt{laneidx}} &\Rightarrow& \mathsf{vextract\_lane}~({\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2})~l \\ &&|& +\mathtt{0xFD}~34{:}{\mathtt{u32}}~l{:}{\mathtt{laneidx}} &\Rightarrow& {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2}{.}\mathsf{replace\_lane}~l \\ &&|& +\mathtt{0xFD}~14{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16}{.}\mathsf{swizzle} \\ &&|& +\mathtt{0xFD}~15{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16}{.}\mathsf{splat} \\ &&|& +\mathtt{0xFD}~16{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8}{.}\mathsf{splat} \\ &&|& +\mathtt{0xFD}~17{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4}{.}\mathsf{splat} \\ &&|& +\mathtt{0xFD}~18{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}}{\mathsf{x}}{2}{.}\mathsf{splat} \\ &&|& +\mathtt{0xFD}~19{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4}{.}\mathsf{splat} \\ &&|& +\mathtt{0xFD}~20{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2}{.}\mathsf{splat} \\ &&|& +\mathtt{0xFD}~35{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16} {.} \mathsf{eq} \\ &&|& +\mathtt{0xFD}~36{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16} {.} \mathsf{ne} \\ &&|& +\mathtt{0xFD}~37{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16} {.} ({\mathsf{lt}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~38{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16} {.} ({\mathsf{lt}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0xFD}~39{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16} {.} ({\mathsf{gt}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~40{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16} {.} ({\mathsf{gt}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0xFD}~41{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16} {.} ({\mathsf{le}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~42{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16} {.} ({\mathsf{le}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0xFD}~43{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16} {.} ({\mathsf{ge}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~44{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16} {.} ({\mathsf{ge}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0xFD}~45{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} \mathsf{eq} \\ &&|& +\mathtt{0xFD}~46{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} \mathsf{ne} \\ &&|& +\mathtt{0xFD}~47{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} ({\mathsf{lt}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~48{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} ({\mathsf{lt}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0xFD}~49{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} ({\mathsf{gt}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~50{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} ({\mathsf{gt}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0xFD}~51{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} ({\mathsf{le}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~52{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} ({\mathsf{le}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0xFD}~53{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} ({\mathsf{ge}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~54{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} ({\mathsf{ge}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0xFD}~55{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{eq} \\ &&|& +\mathtt{0xFD}~56{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{ne} \\ &&|& +\mathtt{0xFD}~57{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} ({\mathsf{lt}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~58{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} ({\mathsf{lt}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0xFD}~59{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} ({\mathsf{gt}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~60{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} ({\mathsf{gt}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0xFD}~61{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} ({\mathsf{le}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~62{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} ({\mathsf{le}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0xFD}~63{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} ({\mathsf{ge}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~64{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} ({\mathsf{ge}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0xFD}~214{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{eq} \\ &&|& +\mathtt{0xFD}~215{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{ne} \\ &&|& +\mathtt{0xFD}~216{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}}{\mathsf{x}}{2} {.} ({\mathsf{lt}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~217{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}}{\mathsf{x}}{2} {.} ({\mathsf{gt}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~218{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}}{\mathsf{x}}{2} {.} ({\mathsf{le}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~219{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}}{\mathsf{x}}{2} {.} ({\mathsf{ge}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~65{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{eq} \\ &&|& +\mathtt{0xFD}~66{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{ne} \\ &&|& +\mathtt{0xFD}~67{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{lt} \\ &&|& +\mathtt{0xFD}~68{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{gt} \\ &&|& +\mathtt{0xFD}~69{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{le} \\ &&|& +\mathtt{0xFD}~70{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{ge} \\ &&|& +\mathtt{0xFD}~71{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{eq} \\ &&|& +\mathtt{0xFD}~72{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{ne} \\ &&|& +\mathtt{0xFD}~73{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{lt} \\ &&|& +\mathtt{0xFD}~74{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{gt} \\ &&|& +\mathtt{0xFD}~75{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{le} \\ &&|& +\mathtt{0xFD}~76{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{ge} \\ &&|& +\mathtt{0xFD}~77{:}{\mathtt{u32}} &\Rightarrow& \mathsf{v{\scriptstyle 128}} {.} \mathsf{not} \\ &&|& +\mathtt{0xFD}~78{:}{\mathtt{u32}} &\Rightarrow& \mathsf{v{\scriptstyle 128}} {.} \mathsf{and} \\ &&|& +\mathtt{0xFD}~79{:}{\mathtt{u32}} &\Rightarrow& \mathsf{v{\scriptstyle 128}} {.} \mathsf{andnot} \\ &&|& +\mathtt{0xFD}~80{:}{\mathtt{u32}} &\Rightarrow& \mathsf{v{\scriptstyle 128}} {.} \mathsf{or} \\ &&|& +\mathtt{0xFD}~81{:}{\mathtt{u32}} &\Rightarrow& \mathsf{v{\scriptstyle 128}} {.} \mathsf{xor} \\ &&|& +\mathtt{0xFD}~82{:}{\mathtt{u32}} &\Rightarrow& \mathsf{v{\scriptstyle 128}} {.} \mathsf{bitselect} \\ &&|& +\mathtt{0xFD}~83{:}{\mathtt{u32}} &\Rightarrow& \mathsf{v{\scriptstyle 128}} {.} \mathsf{any\_true} \\ &&|& +\mathtt{0xFD}~96{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16} {.} \mathsf{abs} \\ &&|& +\mathtt{0xFD}~97{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16} {.} \mathsf{neg} \\ &&|& +\mathtt{0xFD}~98{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16} {.} \mathsf{popcnt} \\ &&|& +\mathtt{0xFD}~99{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16} {.} \mathsf{all\_true} \\ &&|& +\mathtt{0xFD}~100{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16}{.}\mathsf{bitmask} \\ &&|& +\mathtt{0xFD}~101{:}{\mathtt{u32}} &\Rightarrow& {{\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16}{.}\mathsf{narrow}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8}}{\mathsf{\_}}{\mathsf{s}} \\ &&|& +\mathtt{0xFD}~102{:}{\mathtt{u32}} &\Rightarrow& {{\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16}{.}\mathsf{narrow}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8}}{\mathsf{\_}}{\mathsf{u}} \\ &&|& +\mathtt{0xFD}~107{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16} {.} \mathsf{shl} \\ &&|& +\mathtt{0xFD}~108{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16} {.} ({\mathsf{shr}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~109{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16} {.} ({\mathsf{shr}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0xFD}~110{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16} {.} \mathsf{add} \\ &&|& +\mathtt{0xFD}~111{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16} {.} ({\mathsf{add\_sat}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~112{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16} {.} ({\mathsf{add\_sat}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0xFD}~113{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16} {.} \mathsf{sub} \\ &&|& +\mathtt{0xFD}~114{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16} {.} ({\mathsf{sub\_sat}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~115{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16} {.} ({\mathsf{sub\_sat}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0xFD}~118{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16} {.} ({\mathsf{min}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~119{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16} {.} ({\mathsf{min}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0xFD}~120{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16} {.} ({\mathsf{max}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~121{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16} {.} ({\mathsf{max}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0xFD}~123{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16} {.} \mathsf{avgr\_u} \\ &&|& +\mathtt{0xFD}~124{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} {\mathsf{extadd\_pairwise}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16}}{\mathsf{\_}}{\mathsf{s}} \\ &&|& +\mathtt{0xFD}~125{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} {\mathsf{extadd\_pairwise}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16}}{\mathsf{\_}}{\mathsf{u}} \\ &&|& +\mathtt{0xFD}~128{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} \mathsf{abs} \\ &&|& +\mathtt{0xFD}~129{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} \mathsf{neg} \\ &&|& +\mathtt{0xFD}~130{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} \mathsf{q{\scriptstyle 15}mulr\_sat\_s} \\ &&|& +\mathtt{0xFD}~131{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} \mathsf{all\_true} \\ &&|& +\mathtt{0xFD}~132{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8}{.}\mathsf{bitmask} \\ &&|& +\mathtt{0xFD}~133{:}{\mathtt{u32}} &\Rightarrow& {{\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8}{.}\mathsf{narrow}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4}}{\mathsf{\_}}{\mathsf{s}} \\ &&|& +\mathtt{0xFD}~134{:}{\mathtt{u32}} &\Rightarrow& {{\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8}{.}\mathsf{narrow}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4}}{\mathsf{\_}}{\mathsf{u}} \\ &&|& +\mathtt{0xFD}~135{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} {\mathsf{extend}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16}} \\ &&|& +\mathtt{0xFD}~136{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} {\mathsf{extend}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16}} \\ &&|& +\mathtt{0xFD}~137{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} {\mathsf{extend}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16}} \\ &&|& +\mathtt{0xFD}~138{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} {\mathsf{extend}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16}} \\ &&|& +\mathtt{0xFD}~139{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} \mathsf{shl} \\ &&|& +\mathtt{0xFD}~140{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} ({\mathsf{shr}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~141{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} ({\mathsf{shr}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0xFD}~142{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} \mathsf{add} \\ &&|& +\mathtt{0xFD}~143{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} ({\mathsf{add\_sat}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~144{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} ({\mathsf{add\_sat}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0xFD}~145{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} \mathsf{sub} \\ &&|& +\mathtt{0xFD}~146{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} ({\mathsf{sub\_sat}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~147{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} ({\mathsf{sub\_sat}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0xFD}~149{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} \mathsf{mul} \\ &&|& +\mathtt{0xFD}~150{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} ({\mathsf{min}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~151{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} ({\mathsf{min}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0xFD}~152{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} ({\mathsf{max}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~153{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} ({\mathsf{max}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0xFD}~155{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} \mathsf{avgr\_u} \\ &&|& +\mathtt{0xFD}~156{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} {({\mathsf{extmul}}{\mathsf{\_}}{\mathsf{low}})}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16}}{\mathsf{\_}}{\mathsf{s}} \\ &&|& +\mathtt{0xFD}~157{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} {({\mathsf{extmul}}{\mathsf{\_}}{\mathsf{high}})}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16}}{\mathsf{\_}}{\mathsf{s}} \\ &&|& +\mathtt{0xFD}~158{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} {({\mathsf{extmul}}{\mathsf{\_}}{\mathsf{low}})}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16}}{\mathsf{\_}}{\mathsf{u}} \\ &&|& +\mathtt{0xFD}~159{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8} {.} {({\mathsf{extmul}}{\mathsf{\_}}{\mathsf{high}})}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 8}}}{\mathsf{x}}{16}}{\mathsf{\_}}{\mathsf{u}} \\ &&|& +\mathtt{0xFD}~126{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} {\mathsf{extadd\_pairwise}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8}}{\mathsf{\_}}{\mathsf{s}} \\ &&|& +\mathtt{0xFD}~127{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} {\mathsf{extadd\_pairwise}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8}}{\mathsf{\_}}{\mathsf{u}} \\ &&|& +\mathtt{0xFD}~160{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{abs} \\ &&|& +\mathtt{0xFD}~161{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{neg} \\ &&|& +\mathtt{0xFD}~163{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{all\_true} \\ &&|& +\mathtt{0xFD}~164{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4}{.}\mathsf{bitmask} \\ &&|& +\mathtt{0xFD}~167{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} {\mathsf{extend}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8}} \\ &&|& +\mathtt{0xFD}~168{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} {\mathsf{extend}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8}} \\ &&|& +\mathtt{0xFD}~169{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} {\mathsf{extend}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8}} \\ &&|& +\mathtt{0xFD}~170{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} {\mathsf{extend}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8}} \\ &&|& +\mathtt{0xFD}~171{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{shl} \\ &&|& +\mathtt{0xFD}~172{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} ({\mathsf{shr}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~173{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} ({\mathsf{shr}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0xFD}~174{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{add} \\ &&|& +\mathtt{0xFD}~177{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{sub} \\ &&|& +\mathtt{0xFD}~181{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{mul} \\ &&|& +\mathtt{0xFD}~182{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} ({\mathsf{min}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~183{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} ({\mathsf{min}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0xFD}~184{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} ({\mathsf{max}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~185{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} ({\mathsf{max}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0xFD}~186{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} {\mathsf{dot}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8}}{\mathsf{\_}}{\mathsf{s}} \\ &&|& +\mathtt{0xFD}~188{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} {({\mathsf{extmul}}{\mathsf{\_}}{\mathsf{low}})}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8}}{\mathsf{\_}}{\mathsf{s}} \\ &&|& +\mathtt{0xFD}~189{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} {({\mathsf{extmul}}{\mathsf{\_}}{\mathsf{high}})}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8}}{\mathsf{\_}}{\mathsf{s}} \\ &&|& +\mathtt{0xFD}~190{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} {({\mathsf{extmul}}{\mathsf{\_}}{\mathsf{low}})}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8}}{\mathsf{\_}}{\mathsf{u}} \\ &&|& +\mathtt{0xFD}~191{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} {({\mathsf{extmul}}{\mathsf{\_}}{\mathsf{high}})}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 16}}}{\mathsf{x}}{8}}{\mathsf{\_}}{\mathsf{u}} \\ &&|& +\mathtt{0xFD}~192{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{abs} \\ &&|& +\mathtt{0xFD}~193{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{neg} \\ &&|& +\mathtt{0xFD}~195{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{all\_true} \\ &&|& +\mathtt{0xFD}~196{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}}{\mathsf{x}}{2}{.}\mathsf{bitmask} \\ &&|& +\mathtt{0xFD}~199{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}}{\mathsf{x}}{2} {.} {\mathsf{extend}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4}} \\ &&|& +\mathtt{0xFD}~200{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}}{\mathsf{x}}{2} {.} {\mathsf{extend}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4}} \\ &&|& +\mathtt{0xFD}~201{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}}{\mathsf{x}}{2} {.} {\mathsf{extend}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4}} \\ &&|& +\mathtt{0xFD}~202{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}}{\mathsf{x}}{2} {.} {\mathsf{extend}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4}} \\ &&|& +\mathtt{0xFD}~203{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{shl} \\ &&|& +\mathtt{0xFD}~204{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}}{\mathsf{x}}{2} {.} ({\mathsf{shr}}{\mathsf{\_}}{\mathsf{s}}) \\ &&|& +\mathtt{0xFD}~205{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}}{\mathsf{x}}{2} {.} ({\mathsf{shr}}{\mathsf{\_}}{\mathsf{u}}) \\ &&|& +\mathtt{0xFD}~206{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{add} \\ &&|& +\mathtt{0xFD}~209{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{sub} \\ &&|& +\mathtt{0xFD}~213{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{mul} \\ &&|& +\mathtt{0xFD}~220{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}}{\mathsf{x}}{2} {.} {({\mathsf{extmul}}{\mathsf{\_}}{\mathsf{low}})}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4}}{\mathsf{\_}}{\mathsf{s}} \\ &&|& +\mathtt{0xFD}~221{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}}{\mathsf{x}}{2} {.} {({\mathsf{extmul}}{\mathsf{\_}}{\mathsf{high}})}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4}}{\mathsf{\_}}{\mathsf{s}} \\ &&|& +\mathtt{0xFD}~222{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}}{\mathsf{x}}{2} {.} {({\mathsf{extmul}}{\mathsf{\_}}{\mathsf{low}})}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4}}{\mathsf{\_}}{\mathsf{u}} \\ &&|& +\mathtt{0xFD}~223{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 64}}}{\mathsf{x}}{2} {.} {({\mathsf{extmul}}{\mathsf{\_}}{\mathsf{high}})}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4}}{\mathsf{\_}}{\mathsf{u}} \\ &&|& +\mathtt{0xFD}~103{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{ceil} \\ &&|& +\mathtt{0xFD}~104{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{floor} \\ &&|& +\mathtt{0xFD}~105{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{trunc} \\ &&|& +\mathtt{0xFD}~106{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{nearest} \\ &&|& +\mathtt{0xFD}~224{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{abs} \\ &&|& +\mathtt{0xFD}~225{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{neg} \\ &&|& +\mathtt{0xFD}~227{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{sqrt} \\ &&|& +\mathtt{0xFD}~228{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{add} \\ &&|& +\mathtt{0xFD}~229{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{sub} \\ &&|& +\mathtt{0xFD}~230{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{mul} \\ &&|& +\mathtt{0xFD}~231{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{div} \\ &&|& +\mathtt{0xFD}~232{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{min} \\ &&|& +\mathtt{0xFD}~233{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{max} \\ &&|& +\mathtt{0xFD}~234{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{pmin} \\ &&|& +\mathtt{0xFD}~235{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4} {.} \mathsf{pmax} \\ &&|& +\mathtt{0xFD}~116{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{ceil} \\ &&|& +\mathtt{0xFD}~117{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{floor} \\ &&|& +\mathtt{0xFD}~122{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{trunc} \\ &&|& +\mathtt{0xFD}~148{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{nearest} \\ &&|& +\mathtt{0xFD}~236{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{abs} \\ &&|& +\mathtt{0xFD}~237{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{neg} \\ &&|& +\mathtt{0xFD}~239{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{sqrt} \\ &&|& +\mathtt{0xFD}~240{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{add} \\ &&|& +\mathtt{0xFD}~241{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{sub} \\ &&|& +\mathtt{0xFD}~242{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{mul} \\ &&|& +\mathtt{0xFD}~243{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{div} \\ &&|& +\mathtt{0xFD}~244{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{min} \\ &&|& +\mathtt{0xFD}~245{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{max} \\ &&|& +\mathtt{0xFD}~246{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{pmin} \\ &&|& +\mathtt{0xFD}~247{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2} {.} \mathsf{pmax} \\ &&|& +\mathtt{0xFD}~248{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} {\mathsf{trunc\_sat}}{\mathsf{\_}}{{\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4}} \\ &&|& +\mathtt{0xFD}~249{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} {\mathsf{trunc\_sat}}{\mathsf{\_}}{{\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4}} \\ &&|& +\mathtt{0xFD}~250{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4} {.} {\mathsf{convert}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4}} \\ &&|& +\mathtt{0xFD}~251{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4} {.} {\mathsf{convert}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4}} \\ &&|& +\mathtt{0xFD}~252{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} {\mathsf{trunc\_sat}}{\mathsf{\_}}{{\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2}} \\ &&|& +\mathtt{0xFD}~253{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4} {.} {\mathsf{trunc\_sat}}{\mathsf{\_}}{{\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2}} \\ &&|& +\mathtt{0xFD}~254{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2} {.} {\mathsf{convert}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4}} \\ &&|& +\mathtt{0xFD}~255{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2} {.} {\mathsf{convert}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{4}} \\ &&|& +\mathtt{0xFD}~94{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4} {.} {\mathsf{demote}}{\mathsf{\_}}{{\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2}} \\ &&|& +\mathtt{0xFD}~95{:}{\mathtt{u32}} &\Rightarrow& {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{2} {.} {\mathsf{promote}}{\mathsf{\_}}{{\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{4}} \\ \end{array} $$ @@ -8597,7 +8597,7 @@ $$ $$ \begin{array}{@{}l@{}rrlll@{}l@{}} -& {{\mathtt{section}}}_{N}({\mathtt{X}}) &::=& N{:}{\mathtt{byte}}~{\mathit{len}}{:}{\mathtt{u{\scriptstyle32}}}~{{\mathit{en}}^\ast}{:}{\mathtt{X}} &\Rightarrow& {{\mathit{en}}^\ast} +& {{\mathtt{section}}}_{{\mathit{{\scriptstyle N}}}}({\mathtt{X}}) &::=& {\mathit{{\scriptstyle N}}}{:}{\mathtt{byte}}~{\mathit{len}}{:}{\mathtt{u32}}~{{\mathit{en}}^\ast}{:}{\mathtt{X}} &\Rightarrow& {{\mathit{en}}^\ast} &\qquad \mbox{if}~{\mathit{len}} = ||{\mathtt{X}}|| \\ &&|& \epsilon &\Rightarrow& \epsilon \\ \end{array} @@ -8688,14 +8688,14 @@ $$ $$ \begin{array}{@{}l@{}rrlll@{}l@{}} & {\mathtt{elemkind}} &::=& \mathtt{0x00} &\Rightarrow& \mathsf{ref}~\mathsf{null}~\mathsf{func} \\ -& {\mathtt{elem}} &::=& 0{:}{\mathtt{u{\scriptstyle32}}}~e_o{:}{\mathtt{expr}}~{y^\ast}{:}{\mathtt{vec}}({\mathtt{funcidx}}) &\Rightarrow& \mathsf{elem}~(\mathsf{ref}~\mathsf{null}~\mathsf{func})~{(\mathsf{ref.func}~y)^\ast}~(\mathsf{active}~0~e_o) \\ &&|& -1{:}{\mathtt{u{\scriptstyle32}}}~{\mathit{rt}}{:}{\mathtt{elemkind}}~{y^\ast}{:}{\mathtt{vec}}({\mathtt{funcidx}}) &\Rightarrow& \mathsf{elem}~{\mathit{rt}}~{(\mathsf{ref.func}~y)^\ast}~\mathsf{passive} \\ &&|& -2{:}{\mathtt{u{\scriptstyle32}}}~x{:}{\mathtt{tableidx}}~{\mathit{expr}}{:}{\mathtt{expr}}~{\mathit{rt}}{:}{\mathtt{elemkind}}~{y^\ast}{:}{\mathtt{vec}}({\mathtt{funcidx}}) &\Rightarrow& \mathsf{elem}~{\mathit{rt}}~{(\mathsf{ref.func}~y)^\ast}~(\mathsf{active}~x~{\mathit{expr}}) \\ &&|& -3{:}{\mathtt{u{\scriptstyle32}}}~{\mathit{rt}}{:}{\mathtt{elemkind}}~{y^\ast}{:}{\mathtt{vec}}({\mathtt{funcidx}}) &\Rightarrow& \mathsf{elem}~{\mathit{rt}}~{(\mathsf{ref.func}~y)^\ast}~\mathsf{declare} \\ &&|& -4{:}{\mathtt{u{\scriptstyle32}}}~e_o{:}{\mathtt{expr}}~{e^\ast}{:}{\mathtt{vec}}({\mathtt{expr}}) &\Rightarrow& \mathsf{elem}~(\mathsf{ref}~\mathsf{null}~\mathsf{func})~{e^\ast}~(\mathsf{active}~0~e_o) \\ &&|& -5{:}{\mathtt{u{\scriptstyle32}}}~{\mathit{rt}}{:}{\mathtt{reftype}}~{e^\ast}{:}{\mathtt{vec}}({\mathtt{expr}}) &\Rightarrow& \mathsf{elem}~{\mathit{rt}}~{e^\ast}~\mathsf{passive} \\ &&|& -6{:}{\mathtt{u{\scriptstyle32}}}~x{:}{\mathtt{tableidx}}~{\mathit{expr}}{:}{\mathtt{expr}}~{e^\ast}{:}{\mathtt{vec}}({\mathtt{expr}}) &\Rightarrow& \mathsf{elem}~(\mathsf{ref}~\mathsf{null}~\mathsf{func})~{e^\ast}~(\mathsf{active}~x~{\mathit{expr}}) \\ &&|& -7{:}{\mathtt{u{\scriptstyle32}}}~{\mathit{rt}}{:}{\mathtt{reftype}}~{e^\ast}{:}{\mathtt{vec}}({\mathtt{expr}}) &\Rightarrow& \mathsf{elem}~{\mathit{rt}}~{e^\ast}~\mathsf{declare} \\ +& {\mathtt{elem}} &::=& 0{:}{\mathtt{u32}}~e_o{:}{\mathtt{expr}}~{y^\ast}{:}{\mathtt{vec}}({\mathtt{funcidx}}) &\Rightarrow& \mathsf{elem}~(\mathsf{ref}~\mathsf{null}~\mathsf{func})~{(\mathsf{ref.func}~y)^\ast}~(\mathsf{active}~0~e_o) \\ &&|& +1{:}{\mathtt{u32}}~{\mathit{rt}}{:}{\mathtt{elemkind}}~{y^\ast}{:}{\mathtt{vec}}({\mathtt{funcidx}}) &\Rightarrow& \mathsf{elem}~{\mathit{rt}}~{(\mathsf{ref.func}~y)^\ast}~\mathsf{passive} \\ &&|& +2{:}{\mathtt{u32}}~x{:}{\mathtt{tableidx}}~{\mathit{expr}}{:}{\mathtt{expr}}~{\mathit{rt}}{:}{\mathtt{elemkind}}~{y^\ast}{:}{\mathtt{vec}}({\mathtt{funcidx}}) &\Rightarrow& \mathsf{elem}~{\mathit{rt}}~{(\mathsf{ref.func}~y)^\ast}~(\mathsf{active}~x~{\mathit{expr}}) \\ &&|& +3{:}{\mathtt{u32}}~{\mathit{rt}}{:}{\mathtt{elemkind}}~{y^\ast}{:}{\mathtt{vec}}({\mathtt{funcidx}}) &\Rightarrow& \mathsf{elem}~{\mathit{rt}}~{(\mathsf{ref.func}~y)^\ast}~\mathsf{declare} \\ &&|& +4{:}{\mathtt{u32}}~e_o{:}{\mathtt{expr}}~{e^\ast}{:}{\mathtt{vec}}({\mathtt{expr}}) &\Rightarrow& \mathsf{elem}~(\mathsf{ref}~\mathsf{null}~\mathsf{func})~{e^\ast}~(\mathsf{active}~0~e_o) \\ &&|& +5{:}{\mathtt{u32}}~{\mathit{rt}}{:}{\mathtt{reftype}}~{e^\ast}{:}{\mathtt{vec}}({\mathtt{expr}}) &\Rightarrow& \mathsf{elem}~{\mathit{rt}}~{e^\ast}~\mathsf{passive} \\ &&|& +6{:}{\mathtt{u32}}~x{:}{\mathtt{tableidx}}~{\mathit{expr}}{:}{\mathtt{expr}}~{e^\ast}{:}{\mathtt{vec}}({\mathtt{expr}}) &\Rightarrow& \mathsf{elem}~(\mathsf{ref}~\mathsf{null}~\mathsf{func})~{e^\ast}~(\mathsf{active}~x~{\mathit{expr}}) \\ &&|& +7{:}{\mathtt{u32}}~{\mathit{rt}}{:}{\mathtt{reftype}}~{e^\ast}{:}{\mathtt{vec}}({\mathtt{expr}}) &\Rightarrow& \mathsf{elem}~{\mathit{rt}}~{e^\ast}~\mathsf{declare} \\ & {\mathtt{elemsec}} &::=& {{\mathit{elem}}^\ast}{:}{{\mathtt{section}}}_{9}({\mathtt{vec}}({\mathtt{elem}})) &\Rightarrow& {{\mathit{elem}}^\ast} \\ \end{array} $$ @@ -8710,9 +8710,9 @@ $$ $$ \begin{array}{@{}l@{}rrlll@{}l@{}} -& {\mathtt{locals}} &::=& n{:}{\mathtt{u{\scriptstyle32}}}~t{:}{\mathtt{valtype}} &\Rightarrow& {(\mathsf{local}~t)^{n}} \\ +& {\mathtt{locals}} &::=& n{:}{\mathtt{u32}}~t{:}{\mathtt{valtype}} &\Rightarrow& {(\mathsf{local}~t)^{n}} \\ & {\mathtt{func}} &::=& {{{\mathit{local}}^\ast}^\ast}{:}{\mathtt{vec}}({\mathtt{locals}})~{\mathit{expr}}{:}{\mathtt{expr}} &\Rightarrow& ({\mathrm{concat}}({{{\mathit{local}}^\ast}^\ast}),\, {\mathit{expr}}) \\ -& {\mathtt{code}} &::=& {\mathit{len}}{:}{\mathtt{u{\scriptstyle32}}}~{\mathit{code}}{:}{\mathtt{func}} &\Rightarrow& {\mathit{code}} +& {\mathtt{code}} &::=& {\mathit{len}}{:}{\mathtt{u32}}~{\mathit{code}}{:}{\mathtt{func}} &\Rightarrow& {\mathit{code}} &\qquad \mbox{if}~{\mathit{len}} = ||{\mathtt{func}}|| \\ & {\mathtt{codesec}} &::=& {{\mathit{code}}^\ast}{:}{{\mathtt{section}}}_{10}({\mathtt{vec}}({\mathtt{code}})) &\Rightarrow& {{\mathit{code}}^\ast} \\ \end{array} @@ -8722,9 +8722,9 @@ $$ $$ \begin{array}{@{}l@{}rrlll@{}l@{}} -& {\mathtt{data}} &::=& 0{:}{\mathtt{u{\scriptstyle32}}}~e{:}{\mathtt{expr}}~{b^\ast}{:}{\mathtt{vec}}({\mathtt{byte}}) &\Rightarrow& \mathsf{data}~{b^\ast}~(\mathsf{active}~0~e) \\ &&|& -1{:}{\mathtt{u{\scriptstyle32}}}~{b^\ast}{:}{\mathtt{vec}}({\mathtt{byte}}) &\Rightarrow& \mathsf{data}~{b^\ast}~\mathsf{passive} \\ &&|& -2{:}{\mathtt{u{\scriptstyle32}}}~x{:}{\mathtt{memidx}}~e{:}{\mathtt{expr}}~{b^\ast}{:}{\mathtt{vec}}({\mathtt{byte}}) &\Rightarrow& \mathsf{data}~{b^\ast}~(\mathsf{active}~x~e) \\ +& {\mathtt{data}} &::=& 0{:}{\mathtt{u32}}~e{:}{\mathtt{expr}}~{b^\ast}{:}{\mathtt{vec}}({\mathtt{byte}}) &\Rightarrow& \mathsf{data}~{b^\ast}~(\mathsf{active}~0~e) \\ &&|& +1{:}{\mathtt{u32}}~{b^\ast}{:}{\mathtt{vec}}({\mathtt{byte}}) &\Rightarrow& \mathsf{data}~{b^\ast}~\mathsf{passive} \\ &&|& +2{:}{\mathtt{u32}}~x{:}{\mathtt{memidx}}~e{:}{\mathtt{expr}}~{b^\ast}{:}{\mathtt{vec}}({\mathtt{byte}}) &\Rightarrow& \mathsf{data}~{b^\ast}~(\mathsf{active}~x~e) \\ & {\mathtt{datasec}} &::=& {{\mathit{data}}^\ast}{:}{{\mathtt{section}}}_{11}({\mathtt{vec}}({\mathtt{data}})) &\Rightarrow& {{\mathit{data}}^\ast} \\ \end{array} $$ @@ -8733,7 +8733,7 @@ $$ $$ \begin{array}{@{}l@{}rrlll@{}l@{}} -& {\mathtt{datacnt}} &::=& n{:}{\mathtt{u{\scriptstyle32}}} &\Rightarrow& n \\ +& {\mathtt{datacnt}} &::=& n{:}{\mathtt{u32}} &\Rightarrow& n \\ & {\mathtt{datacntsec}} &::=& {n^\ast}{:}{{\mathtt{section}}}_{12}({\mathtt{datacnt}}) &\Rightarrow& {n^\ast} \\ \end{array} $$ @@ -8742,7 +8742,7 @@ $$ $$ \begin{array}{@{}l@{}rrlll@{}l@{}} -& {\mathtt{module}} &::=& \mathtt{0x00}~\mathtt{0x61}~\mathtt{0x73}~\mathtt{0x6D}~1{:}{\mathtt{u{\scriptstyle32}}}~{{\mathtt{customsec}}^\ast} \\ &&&{{\mathit{type}}^\ast}{:}{\mathtt{typesec}}~{{\mathtt{customsec}}^\ast} \\ &&&{{\mathit{import}}^\ast}{:}{\mathtt{importsec}}~{{\mathtt{customsec}}^\ast} \\ &&&{{\mathit{typeidx}}^{n}}{:}{\mathtt{funcsec}}~{{\mathtt{customsec}}^\ast} \\ &&&{{\mathit{table}}^\ast}{:}{\mathtt{tablesec}}~{{\mathtt{customsec}}^\ast} \\ &&&{{\mathit{mem}}^\ast}{:}{\mathtt{memsec}}~{{\mathtt{customsec}}^\ast} \\ &&&{{\mathit{global}}^\ast}{:}{\mathtt{globalsec}}~{{\mathtt{customsec}}^\ast} \\ &&&{{\mathit{export}}^\ast}{:}{\mathtt{exportsec}}~{{\mathtt{customsec}}^\ast} \\ &&&{{\mathit{start}}^\ast}{:}{\mathtt{startsec}}~{{\mathtt{customsec}}^\ast} \\ &&&{{\mathit{elem}}^\ast}{:}{\mathtt{elemsec}}~{{\mathtt{customsec}}^\ast} \\ &&&{{m'}^\ast}{:}{\mathtt{datacntsec}}~{{\mathtt{customsec}}^\ast} \\ &&&{({{\mathit{local}}^\ast},\, {\mathit{expr}})^{n}}{:}{\mathtt{codesec}}~{{\mathtt{customsec}}^\ast} \\ &&&{{\mathit{data}}^{m}}{:}{\mathtt{datasec}}~{{\mathtt{customsec}}^\ast} &\Rightarrow& \mathsf{module}~{{\mathit{type}}^\ast}~{{\mathit{import}}^\ast}~{{\mathit{func}}^{n}}~{{\mathit{global}}^\ast}~{{\mathit{table}}^\ast}~{{\mathit{mem}}^\ast}~{{\mathit{elem}}^\ast}~{{\mathit{data}}^{m}}~{{\mathit{start}}^\ast}~{{\mathit{export}}^\ast} +& {\mathtt{module}} &::=& \mathtt{0x00}~\mathtt{0x61}~\mathtt{0x73}~\mathtt{0x6D}~1{:}{\mathtt{u32}}~{{\mathtt{customsec}}^\ast} \\ &&&{{\mathit{type}}^\ast}{:}{\mathtt{typesec}}~{{\mathtt{customsec}}^\ast} \\ &&&{{\mathit{import}}^\ast}{:}{\mathtt{importsec}}~{{\mathtt{customsec}}^\ast} \\ &&&{{\mathit{typeidx}}^{n}}{:}{\mathtt{funcsec}}~{{\mathtt{customsec}}^\ast} \\ &&&{{\mathit{table}}^\ast}{:}{\mathtt{tablesec}}~{{\mathtt{customsec}}^\ast} \\ &&&{{\mathit{mem}}^\ast}{:}{\mathtt{memsec}}~{{\mathtt{customsec}}^\ast} \\ &&&{{\mathit{global}}^\ast}{:}{\mathtt{globalsec}}~{{\mathtt{customsec}}^\ast} \\ &&&{{\mathit{export}}^\ast}{:}{\mathtt{exportsec}}~{{\mathtt{customsec}}^\ast} \\ &&&{{\mathit{start}}^\ast}{:}{\mathtt{startsec}}~{{\mathtt{customsec}}^\ast} \\ &&&{{\mathit{elem}}^\ast}{:}{\mathtt{elemsec}}~{{\mathtt{customsec}}^\ast} \\ &&&{{m'}^\ast}{:}{\mathtt{datacntsec}}~{{\mathtt{customsec}}^\ast} \\ &&&{({{\mathit{local}}^\ast},\, {\mathit{expr}})^{n}}{:}{\mathtt{codesec}}~{{\mathtt{customsec}}^\ast} \\ &&&{{\mathit{data}}^{m}}{:}{\mathtt{datasec}}~{{\mathtt{customsec}}^\ast} &\Rightarrow& \mathsf{module}~{{\mathit{type}}^\ast}~{{\mathit{import}}^\ast}~{{\mathit{func}}^{n}}~{{\mathit{global}}^\ast}~{{\mathit{table}}^\ast}~{{\mathit{mem}}^\ast}~{{\mathit{elem}}^\ast}~{{\mathit{data}}^{m}}~{{\mathit{start}}^\ast}~{{\mathit{export}}^\ast} &\qquad \mbox{if}~{{m'}^\ast} = \epsilon \lor {\mathrm{free}}_{\mathit{dataidx}}({{\mathit{func}}^{n}}) = \epsilon \\ &&&&&&\qquad {\land}~m = {\mathrm{sum}}({{m'}^\ast}) \\ &&&&&&\qquad {\land}~(({\mathit{func}} = \mathsf{func}~{\mathit{typeidx}}~{{\mathit{local}}^\ast}~{\mathit{expr}}))^{n} \\ @@ -8753,13 +8753,13 @@ $$ $$ \begin{array}{@{}lrrl@{}l@{}} -& A &::=& {\mathit{nat}} \\ -& B &::=& {\mathit{nat}} \\ -& {\mathit{sym}} &::=& A_1 ~|~ \dots ~|~ A_n \\ -& {\mathit{sym}} &::=& A_1 ~|~ A_2 \\ +& {\mathit{{\scriptstyle A}}} &::=& {\mathit{nat}} \\ +& {\mathit{{\scriptstyle B}}} &::=& {\mathit{nat}} \\ +& {\mathit{sym}} &::=& {\mathit{{\scriptstyle A}}}_1 ~|~ \dots ~|~ {\mathit{{\scriptstyle A}}}_n \\ +& {\mathit{sym}} &::=& {\mathit{{\scriptstyle A}}}_1 ~|~ {\mathit{{\scriptstyle A}}}_2 \\ & &::=& () \\ & r &::=& \{ \begin{array}[t]{@{}l@{}l@{}} -{\mathsf{field}}_{1}~A_1,\; {\mathsf{field}}_{2}~A_2,\; \dots~ \}\end{array} \\ +{\mathsf{field}}_{1}~{\mathit{{\scriptstyle A}}}_1,\; {\mathsf{field}}_{2}~{\mathit{{\scriptstyle A}}}_2,\; \dots~ \}\end{array} \\ & {\mathit{pth}} &::=& {({}[ i ]~\mid~{.}\mathsf{field})^{+}} \\ & {\mathit{pthaux}} &::=& \{ \begin{array}[t]{@{}l@{}l@{}} {\mathit{pth}}~(),\; \\ diff --git a/spectec/test-middlend/TEST.md b/spectec/test-middlend/TEST.md index b6caa4cad9..0f2a57f9fa 100644 --- a/spectec/test-middlend/TEST.md +++ b/spectec/test-middlend/TEST.md @@ -773,15 +773,15 @@ syntax vvtestop = ;; 1-syntax.watsup syntax vunop_(shape : shape) ;; 1-syntax.watsup - syntax vunop_{Jnn : Jnn, N : N}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(N))) = + syntax vunop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | ABS | NEG | POPCNT{Jnn : Jnn} - -- if (Jnn = I8_Jnn) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 8) ;; 1-syntax.watsup - syntax vunop_{Fnn : Fnn, N : N}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(N))) = + syntax vunop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = | ABS | NEG | SQRT @@ -794,7 +794,7 @@ syntax vunop_(shape : shape) ;; 1-syntax.watsup syntax vbinop_(shape : shape) ;; 1-syntax.watsup - syntax vbinop_{Jnn : Jnn, N : N}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(N))) = + syntax vbinop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | ADD | SUB | ADD_SAT{sx : sx}(sx : sx) @@ -814,7 +814,7 @@ syntax vbinop_(shape : shape) ;; 1-syntax.watsup - syntax vbinop_{Fnn : Fnn, N : N}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(N))) = + syntax vbinop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = | ADD | SUB | MUL @@ -826,13 +826,13 @@ syntax vbinop_(shape : shape) ;; 1-syntax.watsup -syntax vtestop_{Jnn : Jnn, N : N}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(N))) = +syntax vtestop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | ALL_TRUE ;; 1-syntax.watsup syntax vrelop_(shape : shape) ;; 1-syntax.watsup - syntax vrelop_{Jnn : Jnn, N : N}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(N))) = + syntax vrelop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | EQ | NE | LT{sx : sx}(sx : sx) @@ -846,7 +846,7 @@ syntax vrelop_(shape : shape) ;; 1-syntax.watsup - syntax vrelop_{Fnn : Fnn, N : N}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(N))) = + syntax vrelop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = | EQ | NE | LT @@ -858,25 +858,25 @@ syntax vrelop_(shape : shape) ;; 1-syntax.watsup syntax vcvtop_(shape_1 : shape, shape_2 : shape) ;; 1-syntax.watsup - syntax vcvtop_{Jnn_1 : Jnn, N_1 : N, Jnn_2 : Jnn, N_2 : N}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(N_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(N_2))) = + syntax vcvtop_{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) = | EXTEND{Jnn_2 : Jnn, Jnn_1 : Jnn} -- if ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) ;; 1-syntax.watsup - syntax vcvtop_{Jnn_1 : Jnn, N_1 : N, Fnn_2 : Fnn, N_2 : N}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(N_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(N_2))) = + syntax vcvtop_{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) = | CONVERT -- if (($sizenn2((Fnn_2 : Fnn <: numtype)) >= $lsizenn1((Jnn_1 : Jnn <: lanetype))) /\ ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32)) ;; 1-syntax.watsup - syntax vcvtop_{Fnn_1 : Fnn, N_1 : N, Jnn_2 : Jnn, N_2 : N}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(N_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(N_2))) = + syntax vcvtop_{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) = | TRUNC_SAT -- if (($sizenn1((Fnn_1 : Fnn <: numtype)) >= $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) ;; 1-syntax.watsup - syntax vcvtop_{Fnn_1 : Fnn, N_1 : N, Fnn_2 : Fnn, N_2 : N}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(N_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(N_2))) = + syntax vcvtop_{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) = | DEMOTE -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) > $sizenn2((Fnn_2 : Fnn <: numtype))) | PROMOTE @@ -899,17 +899,17 @@ syntax zero_{shape_1 : shape, shape_2 : shape}(shape_1, shape_2) = -- if (($lanetype(shape_1) = F64_lanetype) /\ ($lsize($lanetype(shape_2)) = 32)) ;; 1-syntax.watsup -syntax vshiftop_{Jnn : Jnn, N : N}(`%X%`_ishape(Jnn, `%`_dim(N))) = +syntax vshiftop_{Jnn : Jnn, M : M}(`%X%`_ishape(Jnn, `%`_dim(M))) = | SHL | SHR{sx : sx}(sx : sx) ;; 1-syntax.watsup -syntax vextunop_{Jnn : Jnn, N : N}(`%X%`_ishape(Jnn, `%`_dim(N))) = +syntax vextunop_{Jnn : Jnn, M : M}(`%X%`_ishape(Jnn, `%`_dim(M))) = | EXTADD_PAIRWISE -- if ((16 <= $lsizenn((Jnn : Jnn <: lanetype))) /\ ($lsizenn((Jnn : Jnn <: lanetype)) <= 32)) ;; 1-syntax.watsup -syntax vextbinop_{Jnn : Jnn, N : N}(`%X%`_ishape(Jnn, `%`_dim(N))) = +syntax vextbinop_{Jnn : Jnn, M : M}(`%X%`_ishape(Jnn, `%`_dim(M))) = | EXTMUL{half : half}(half : half) | DOT{Jnn : Jnn} -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 32) @@ -932,11 +932,6 @@ syntax blocktype = | _RESULT{valtype? : valtype?}(valtype?{valtype : valtype} : valtype?) | _IDX{funcidx : funcidx}(funcidx : funcidx) -;; 1-syntax.watsup -syntax sz = - | `%`{i : nat}(i : nat) - -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) - ;; 1-syntax.watsup rec { @@ -970,7 +965,7 @@ syntax instr = | RELOP{numtype : numtype, relop_ : relop_(numtype)}(numtype : numtype, relop_ : relop_(numtype)) | CVTOP{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop, sx? : sx?}(numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop, sx?{sx : sx} : sx?) -- if (numtype_1 =/= numtype_2) - | EXTEND{numtype : numtype, n : n}(numtype : numtype, n : n) + | EXTEND{numtype : numtype, N : N}(numtype : numtype, N : N) | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) | VVUNOP{vectype : vectype, vvunop : vvunop}(vectype : vectype, vvunop : vvunop) | VVBINOP{vectype : vectype, vvbinop : vvbinop}(vectype : vectype, vvbinop : vvbinop) @@ -986,10 +981,6 @@ syntax instr = -- if (ishape = `%X%`_ishape(I8_Jnn, `%`_dim(16))) | VSHUFFLE{ishape : ishape, laneidx* : laneidx*}(ishape : ishape, laneidx*{laneidx : laneidx} : laneidx*) -- if ((ishape = `%X%`_ishape(I8_Jnn, `%`_dim(16))) /\ (|laneidx*{laneidx : laneidx}| = 16)) - | VSPLAT{shape : shape}(shape : shape) - | VEXTRACT_LANE{shape : shape, sx? : sx?, laneidx : laneidx, numtype : numtype}(shape : shape, sx?{sx : sx} : sx?, laneidx : laneidx) - -- if (($lanetype(shape) = (numtype : numtype <: lanetype)) <=> (sx?{sx : sx} = ?())) - | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) | VEXTUNOP{ishape_1 : ishape, ishape_2 : ishape, vextunop_ : vextunop_(ishape_1), sx : sx}(ishape_1 : ishape, ishape_2 : ishape, vextunop_ : vextunop_(ishape_1), sx : sx) -- if ($lsize($lanetype((ishape_1 : ishape <: shape))) = (2 * $lsize($lanetype((ishape_2 : ishape <: shape))))) | VEXTBINOP{ishape_1 : ishape, ishape_2 : ishape, vextbinop_ : vextbinop_(ishape_1), sx : sx}(ishape_1 : ishape, ishape_2 : ishape, vextbinop_ : vextbinop_(ishape_1), sx : sx) @@ -998,6 +989,10 @@ syntax instr = -- if (($lsize($lanetype((ishape_2 : ishape <: shape))) = (2 * $lsize($lanetype((ishape_1 : ishape <: shape))))) /\ ((2 * $lsize($lanetype((ishape_1 : ishape <: shape)))) <= 32)) | VCVTOP{shape_1 : shape, shape_2 : shape, vcvtop_ : vcvtop_(shape_2, shape_1), half_? : half_(shape_2, shape_1)?, sx? : sx?, zero_? : zero_(shape_2, shape_1)?}(shape_1 : shape, shape_2 : shape, vcvtop_ : vcvtop_(shape_2, shape_1), half_?{half_ : half_(shape_2, shape_1)} : half_(shape_2, shape_1)?, sx?{sx : sx} : sx?, zero_?{zero_ : zero_(shape_2, shape_1)} : zero_(shape_2, shape_1)?) -- if ($lanetype(shape_1) =/= $lanetype(shape_2)) + | VSPLAT{shape : shape}(shape : shape) + | VEXTRACT_LANE{shape : shape, sx? : sx?, laneidx : laneidx, numtype : numtype}(shape : shape, sx?{sx : sx} : sx?, laneidx : laneidx) + -- if (($lanetype(shape) = (numtype : numtype <: lanetype)) <=> (sx?{sx : sx} = ?())) + | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) | REF.NULL{heaptype : heaptype}(heaptype : heaptype) | REF.IS_NULL | REF.AS_NON_NULL @@ -1038,14 +1033,14 @@ syntax instr = | TABLE.COPY{tableidx : tableidx}(tableidx : tableidx, tableidx) | TABLE.INIT{tableidx : tableidx, elemidx : elemidx}(tableidx : tableidx, elemidx : elemidx) | ELEM.DROP{elemidx : elemidx}(elemidx : elemidx) - | `LOAD%(_)%?%%`{numtype : numtype, sz? : sz?, sx? : sx?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, (sz, sx)?{sx : sx, sz : sz} : (sz, sx)?, memidx : memidx, memarg : memarg) - -- (if ((numtype = (Inn : Inn <: numtype)) /\ (sz!`%`_sz.0 < $size((Inn : Inn <: numtype)))))?{Inn : Inn, sz : sz} - | STORE{numtype : numtype, sz? : sz?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, sz?{sz : sz} : sz?, memidx : memidx, memarg : memarg) - -- (if ((numtype = (Inn : Inn <: numtype)) /\ (sz!`%`_sz.0 < $size((Inn : Inn <: numtype)))))?{Inn : Inn, sz : sz} + | `LOAD%(_)%?%%`{numtype : numtype, N? : N?, sx? : sx?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, (N, sx)?{N : N, sx : sx} : (N, sx)?, memidx : memidx, memarg : memarg) + -- (if ((numtype = (Inn : Inn <: numtype)) /\ (N < $size((Inn : Inn <: numtype)))))?{Inn : Inn, N : nat} + | STORE{numtype : numtype, N? : N?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, N?{N : N} : N?, memidx : memidx, memarg : memarg) + -- (if ((numtype = (Inn : Inn <: numtype)) /\ (N < $size((Inn : Inn <: numtype)))))?{Inn : Inn, N : nat} | VLOAD{vectype : vectype, vloadop? : vloadop?, memidx : memidx, memarg : memarg}(vectype : vectype, vloadop?{vloadop : vloadop} : vloadop?, memidx : memidx, memarg : memarg) - | VLOAD_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VLOAD_LANE{vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx) | VSTORE{vectype : vectype, memidx : memidx, memarg : memarg}(vectype : vectype, memidx : memidx, memarg : memarg) - | VSTORE_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE_LANE{vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx) | MEMORY.SIZE{memidx : memidx}(memidx : memidx) | MEMORY.GROW{memidx : memidx}(memidx : memidx) | MEMORY.FILL{memidx : memidx}(memidx : memidx) @@ -1054,6 +1049,11 @@ syntax instr = | DATA.DROP{dataidx : dataidx}(dataidx : dataidx) } +;; 1-syntax.watsup +syntax sz = + | `%`{i : nat}(i : nat) + -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) + ;; 1-syntax.watsup syntax expr = instr* @@ -2465,7 +2465,7 @@ syntax admininstr = | RELOP{numtype : numtype, relop_ : relop_(numtype)}(numtype : numtype, relop_ : relop_(numtype)) | CVTOP{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop, sx? : sx?}(numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop, sx?{sx : sx} : sx?) -- if (numtype_1 =/= numtype_2) - | EXTEND{numtype : numtype, n : n}(numtype : numtype, n : n) + | EXTEND{numtype : numtype, N : N}(numtype : numtype, N : N) | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) | VVUNOP{vectype : vectype, vvunop : vvunop}(vectype : vectype, vvunop : vvunop) | VVBINOP{vectype : vectype, vvbinop : vvbinop}(vectype : vectype, vvbinop : vvbinop) @@ -2481,10 +2481,6 @@ syntax admininstr = -- if (ishape = `%X%`_ishape(I8_Jnn, `%`_dim(16))) | VSHUFFLE{ishape : ishape, laneidx* : laneidx*}(ishape : ishape, laneidx*{laneidx : laneidx} : laneidx*) -- if ((ishape = `%X%`_ishape(I8_Jnn, `%`_dim(16))) /\ (|laneidx*{laneidx : laneidx}| = 16)) - | VSPLAT{shape : shape}(shape : shape) - | VEXTRACT_LANE{shape : shape, sx? : sx?, laneidx : laneidx, numtype : numtype}(shape : shape, sx?{sx : sx} : sx?, laneidx : laneidx) - -- if (($lanetype(shape) = (numtype : numtype <: lanetype)) <=> (sx?{sx : sx} = ?())) - | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) | VEXTUNOP{ishape_1 : ishape, ishape_2 : ishape, vextunop_ : vextunop_(ishape_1), sx : sx}(ishape_1 : ishape, ishape_2 : ishape, vextunop_ : vextunop_(ishape_1), sx : sx) -- if ($lsize($lanetype((ishape_1 : ishape <: shape))) = (2 * $lsize($lanetype((ishape_2 : ishape <: shape))))) | VEXTBINOP{ishape_1 : ishape, ishape_2 : ishape, vextbinop_ : vextbinop_(ishape_1), sx : sx}(ishape_1 : ishape, ishape_2 : ishape, vextbinop_ : vextbinop_(ishape_1), sx : sx) @@ -2493,6 +2489,10 @@ syntax admininstr = -- if (($lsize($lanetype((ishape_2 : ishape <: shape))) = (2 * $lsize($lanetype((ishape_1 : ishape <: shape))))) /\ ((2 * $lsize($lanetype((ishape_1 : ishape <: shape)))) <= 32)) | VCVTOP{shape_1 : shape, shape_2 : shape, vcvtop_ : vcvtop_(shape_2, shape_1), half_? : half_(shape_2, shape_1)?, sx? : sx?, zero_? : zero_(shape_2, shape_1)?}(shape_1 : shape, shape_2 : shape, vcvtop_ : vcvtop_(shape_2, shape_1), half_?{half_ : half_(shape_2, shape_1)} : half_(shape_2, shape_1)?, sx?{sx : sx} : sx?, zero_?{zero_ : zero_(shape_2, shape_1)} : zero_(shape_2, shape_1)?) -- if ($lanetype(shape_1) =/= $lanetype(shape_2)) + | VSPLAT{shape : shape}(shape : shape) + | VEXTRACT_LANE{shape : shape, sx? : sx?, laneidx : laneidx, numtype : numtype}(shape : shape, sx?{sx : sx} : sx?, laneidx : laneidx) + -- if (($lanetype(shape) = (numtype : numtype <: lanetype)) <=> (sx?{sx : sx} = ?())) + | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) | REF.NULL{heaptype : heaptype}(heaptype : heaptype) | REF.IS_NULL | REF.AS_NON_NULL @@ -2533,14 +2533,14 @@ syntax admininstr = | TABLE.COPY{tableidx : tableidx}(tableidx : tableidx, tableidx) | TABLE.INIT{tableidx : tableidx, elemidx : elemidx}(tableidx : tableidx, elemidx : elemidx) | ELEM.DROP{elemidx : elemidx}(elemidx : elemidx) - | `LOAD%(_)%?%%`{numtype : numtype, sz? : sz?, sx? : sx?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, (sz, sx)?{sx : sx, sz : sz} : (sz, sx)?, memidx : memidx, memarg : memarg) - -- (if ((numtype = (Inn : Inn <: numtype)) /\ (sz!`%`_sz.0 < $size((Inn : Inn <: numtype)))))?{Inn : Inn, sz : sz} - | STORE{numtype : numtype, sz? : sz?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, sz?{sz : sz} : sz?, memidx : memidx, memarg : memarg) - -- (if ((numtype = (Inn : Inn <: numtype)) /\ (sz!`%`_sz.0 < $size((Inn : Inn <: numtype)))))?{Inn : Inn, sz : sz} + | `LOAD%(_)%?%%`{numtype : numtype, N? : N?, sx? : sx?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, (N, sx)?{N : N, sx : sx} : (N, sx)?, memidx : memidx, memarg : memarg) + -- (if ((numtype = (Inn : Inn <: numtype)) /\ (N < $size((Inn : Inn <: numtype)))))?{Inn : Inn, N : nat} + | STORE{numtype : numtype, N? : N?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, N?{N : N} : N?, memidx : memidx, memarg : memarg) + -- (if ((numtype = (Inn : Inn <: numtype)) /\ (N < $size((Inn : Inn <: numtype)))))?{Inn : Inn, N : nat} | VLOAD{vectype : vectype, vloadop? : vloadop?, memidx : memidx, memarg : memarg}(vectype : vectype, vloadop?{vloadop : vloadop} : vloadop?, memidx : memidx, memarg : memarg) - | VLOAD_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VLOAD_LANE{vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx) | VSTORE{vectype : vectype, memidx : memidx, memarg : memarg}(vectype : vectype, memidx : memidx, memarg : memarg) - | VSTORE_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE_LANE{vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx) | MEMORY.SIZE{memidx : memidx}(memidx : memidx) | MEMORY.GROW{memidx : memidx}(memidx : memidx) | MEMORY.FILL{memidx : memidx}(memidx : memidx) @@ -3785,25 +3785,25 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - ;; 6-typing.watsup:880.1-881.40 - rule vunop{C : context, sh : shape, vunop_sh : vunop_(sh)}: - `%|-%:%`(C, VUNOP_instr(sh, vunop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + ;; 6-typing.watsup:880.1-881.37 + rule vunop{C : context, sh : shape, vunop : vunop_(sh)}: + `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; 6-typing.watsup:883.1-884.47 - rule vbinop{C : context, sh : shape, vbinop_sh : vbinop_(sh)}: - `%|-%:%`(C, VBINOP_instr(sh, vbinop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + ;; 6-typing.watsup:883.1-884.44 + rule vbinop{C : context, sh : shape, vbinop : vbinop_(sh)}: + `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; 6-typing.watsup:886.1-887.43 - rule vtestop{C : context, sh : shape, vtestop_sh : vtestop_(sh)}: - `%|-%:%`(C, VTESTOP_instr(sh, vtestop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + ;; 6-typing.watsup:886.1-887.40 + rule vtestop{C : context, sh : shape, vtestop : vtestop_(sh)}: + `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - ;; 6-typing.watsup:889.1-890.47 - rule vrelop{C : context, sh : shape, vrelop_sh : vrelop_(sh)}: - `%|-%:%`(C, VRELOP_instr(sh, vrelop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + ;; 6-typing.watsup:889.1-890.44 + rule vrelop{C : context, sh : shape, vrelop : vrelop_(sh)}: + `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; 6-typing.watsup:892.1-893.50 - rule vshiftop{C : context, sh : ishape, vshiftop_sh : vshiftop_(sh)}: - `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + ;; 6-typing.watsup:892.1-893.47 + rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_(sh)}: + `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; 6-typing.watsup:895.1-896.33 rule vbitmask{C : context, sh : ishape}: @@ -3952,7 +3952,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; 6-typing.watsup:1025.1-1030.29 rule load{C : context, nt : numtype, n? : n?, sx? : sx?, x : idx, memarg : memarg, mt : memtype, Inn : Inn}: - `%|-%:%`(C, `LOAD%(_)%?%%`_instr(nt, (`%`_sz(n), sx)?{n : nat, sx : sx}, x, memarg), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(C, `LOAD%(_)%?%%`_instr(nt, (n, sx)?{n : N, sx : sx}, x, memarg), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([(nt : numtype <: valtype)]))) -- if (C.MEMS_context[x!`%`_idx.0] = mt) -- if ((2 ^ memarg.ALIGN_memarg!`%`_u32.0) <= ($size(nt) / 8)) -- (if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) <= (n / 8)) /\ ((n / 8) < ($size(nt) / 8))))?{n : nat} @@ -3960,7 +3960,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; 6-typing.watsup:1032.1-1037.29 rule store{C : context, nt : numtype, n? : n?, x : idx, memarg : memarg, mt : memtype, Inn : Inn}: - `%|-%:%`(C, STORE_instr(nt, `%`_sz(n)?{n : nat}, x, memarg), `%->_%%`_instrtype(`%`_resulttype([I32_valtype (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + `%|-%:%`(C, STORE_instr(nt, n?{n : N}, x, memarg), `%->_%%`_instrtype(`%`_resulttype([I32_valtype (nt : numtype <: valtype)]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x!`%`_idx.0] = mt) -- if ((2 ^ memarg.ALIGN_memarg!`%`_u32.0) <= ($size(nt) / 8)) -- (if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) <= (n / 8)) /\ ((n / 8) < ($size(nt) / 8))))?{n : nat} @@ -3986,7 +3986,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; 6-typing.watsup:1054.1-1058.29 rule vload_lane{C : context, n : n, x : idx, memarg : memarg, laneidx : laneidx, mt : memtype}: - `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(n), x, memarg, laneidx), `%->_%%`_instrtype(`%`_resulttype([I32_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, n, x, memarg, laneidx), `%->_%%`_instrtype(`%`_resulttype([I32_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- if (C.MEMS_context[x!`%`_idx.0] = mt) -- if ((2 ^ memarg.ALIGN_memarg!`%`_u32.0) < (n / 8)) -- if (laneidx!`%`_laneidx.0 < (128 / n)) @@ -3999,7 +3999,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; 6-typing.watsup:1065.1-1069.29 rule vstore_lane{C : context, n : n, x : idx, memarg : memarg, laneidx : laneidx, mt : memtype}: - `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(n), x, memarg, laneidx), `%->_%%`_instrtype(`%`_resulttype([I32_valtype V128_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, n, x, memarg, laneidx), `%->_%%`_instrtype(`%`_resulttype([I32_valtype V128_valtype]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x!`%`_idx.0] = mt) -- if ((2 ^ memarg.ALIGN_memarg!`%`_u32.0) < (n / 8)) -- if (laneidx!`%`_laneidx.0 < (128 / n)) @@ -5094,12 +5094,12 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule load-pack-oob{z : state, i : nat, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) `LOAD%(_)%?%%`_admininstr((Inn : Inn <: numtype), ?((`%`_sz(n), sx)), x, ao)]), [TRAP_admininstr]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) `LOAD%(_)%?%%`_admininstr((Inn : Inn <: numtype), ?((n, sx)), x, ao)]), [TRAP_admininstr]) -- if (((i + ao.OFFSET_memarg!`%`_u32.0) + (n / 8)) > |$mem(z, x).BYTES_meminst|) ;; 8-reduction.watsup rule load-pack-val{z : state, i : nat, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN(n)}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) `LOAD%(_)%?%%`_admininstr((Inn : Inn <: numtype), ?((`%`_sz(n), sx)), x, ao)]), [CONST_admininstr((Inn : Inn <: numtype), $ext(n, $size((Inn : Inn <: numtype)), sx, c))]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) `LOAD%(_)%?%%`_admininstr((Inn : Inn <: numtype), ?((n, sx)), x, ao)]), [CONST_admininstr((Inn : Inn <: numtype), $ext(n, $size((Inn : Inn <: numtype)), sx, c))]) -- if ($ibytes(n, c) = $mem(z, x).BYTES_meminst[(i + ao.OFFSET_memarg!`%`_u32.0) : (n / 8)]) ;; 8-reduction.watsup @@ -5150,12 +5150,12 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule vload_lane-oob{z : state, i : nat, c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : nat}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c_1) VLOAD_LANE_admininstr(V128_vectype, `%`_sz(N), x, ao, `%`_laneidx(j))]), [TRAP_admininstr]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c_1) VLOAD_LANE_admininstr(V128_vectype, N, x, ao, `%`_laneidx(j))]), [TRAP_admininstr]) -- if (((i + ao.OFFSET_memarg!`%`_u32.0) + (N / 8)) > |$mem(z, x).BYTES_meminst|) ;; 8-reduction.watsup rule vload_lane-val{z : state, i : nat, c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : nat, c : vec_(V128_Vnn), k : nat, Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c_1) VLOAD_LANE_admininstr(V128_vectype, `%`_sz(N), x, ao, `%`_laneidx(j))]), [VCONST_admininstr(V128_vectype, c)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c_1) VLOAD_LANE_admininstr(V128_vectype, N, x, ao, `%`_laneidx(j))]), [VCONST_admininstr(V128_vectype, c)]) -- if ($ibytes(N, `%`_iN(k)) = $mem(z, x).BYTES_meminst[(i + ao.OFFSET_memarg!`%`_u32.0) : (N / 8)]) -- if (N = $lsize((Jnn : Jnn <: lanetype))) -- if (M = ($vsize(V128_vectype) / N)) @@ -5179,7 +5179,7 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule memory.fill-succ{z : state, i : nat, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) (val : val <: admininstr) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.FILL_admininstr(x)]), [CONST_admininstr(I32_numtype, `%`_num_(i)) (val : val <: admininstr) STORE_admininstr(I32_numtype, ?(`%`_sz(8)), x, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((i + 1))) (val : val <: admininstr) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.FILL_admininstr(x)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) (val : val <: admininstr) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.FILL_admininstr(x)]), [CONST_admininstr(I32_numtype, `%`_num_(i)) (val : val <: admininstr) STORE_admininstr(I32_numtype, ?(8), x, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((i + 1))) (val : val <: admininstr) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.FILL_admininstr(x)]) -- otherwise ;; 8-reduction.watsup @@ -5195,13 +5195,13 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule memory.copy-le{z : state, i_1 : nat, i_2 : nat, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.COPY_admininstr(x_1, x_2)]), [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) `LOAD%(_)%?%%`_admininstr(I32_numtype, ?((`%`_sz(8), U_sx)), x_2, $memarg0) STORE_admininstr(I32_numtype, ?(`%`_sz(8)), x_1, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((i_1 + 1))) CONST_admininstr(I32_numtype, `%`_num_((i_2 + 1))) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.COPY_admininstr(x_1, x_2)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.COPY_admininstr(x_1, x_2)]), [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) `LOAD%(_)%?%%`_admininstr(I32_numtype, ?((8, U_sx)), x_2, $memarg0) STORE_admininstr(I32_numtype, ?(8), x_1, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((i_1 + 1))) CONST_admininstr(I32_numtype, `%`_num_((i_2 + 1))) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.COPY_admininstr(x_1, x_2)]) -- otherwise -- if (i_1 <= i_2) ;; 8-reduction.watsup rule memory.copy-gt{z : state, i_1 : nat, i_2 : nat, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.COPY_admininstr(x_1, x_2)]), [CONST_admininstr(I32_numtype, `%`_num_(((i_1 + n) - 1))) CONST_admininstr(I32_numtype, `%`_num_(((i_2 + n) - 1))) `LOAD%(_)%?%%`_admininstr(I32_numtype, ?((`%`_sz(8), U_sx)), x_2, $memarg0) STORE_admininstr(I32_numtype, ?(`%`_sz(8)), x_1, $memarg0) CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.COPY_admininstr(x_1, x_2)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.COPY_admininstr(x_1, x_2)]), [CONST_admininstr(I32_numtype, `%`_num_(((i_1 + n) - 1))) CONST_admininstr(I32_numtype, `%`_num_(((i_2 + n) - 1))) `LOAD%(_)%?%%`_admininstr(I32_numtype, ?((8, U_sx)), x_2, $memarg0) STORE_admininstr(I32_numtype, ?(8), x_1, $memarg0) CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.COPY_admininstr(x_1, x_2)]) -- otherwise ;; 8-reduction.watsup @@ -5217,7 +5217,7 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule memory.init-succ{z : state, j : nat, i : nat, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(j)) CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.INIT_admininstr(x, y)]), [CONST_admininstr(I32_numtype, `%`_num_(j)) CONST_admininstr(I32_numtype, `%`_num_($data(z, y).BYTES_datainst[i]!`%`_byte.0)) STORE_admininstr(I32_numtype, ?(`%`_sz(8)), x, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((j + 1))) CONST_admininstr(I32_numtype, `%`_num_((i + 1))) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.INIT_admininstr(x, y)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(j)) CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.INIT_admininstr(x, y)]), [CONST_admininstr(I32_numtype, `%`_num_(j)) CONST_admininstr(I32_numtype, `%`_num_($data(z, y).BYTES_datainst[i]!`%`_byte.0)) STORE_admininstr(I32_numtype, ?(8), x, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((j + 1))) CONST_admininstr(I32_numtype, `%`_num_((i + 1))) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.INIT_admininstr(x, y)]) -- otherwise ;; 8-reduction.watsup @@ -5311,12 +5311,12 @@ relation Step: `%~>%`(config, config) ;; 8-reduction.watsup rule store-pack-oob{z : state, i : nat, Inn : Inn, c : num_((Inn : Inn <: numtype)), nt : numtype, n : n, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr((Inn : Inn <: numtype), c) STORE_admininstr(nt, ?(`%`_sz(n)), x, ao)]), `%;%`_config(z, [TRAP_admininstr])) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr((Inn : Inn <: numtype), c) STORE_admininstr(nt, ?(n), x, ao)]), `%;%`_config(z, [TRAP_admininstr])) -- if (((i + ao.OFFSET_memarg!`%`_u32.0) + (n / 8)) > |$mem(z, x).BYTES_meminst|) ;; 8-reduction.watsup rule store-pack-val{z : state, i : nat, Inn : Inn, c : num_((Inn : Inn <: numtype)), nt : numtype, n : n, x : idx, ao : memarg, b* : byte*}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr((Inn : Inn <: numtype), c) STORE_admininstr(nt, ?(`%`_sz(n)), x, ao)]), `%;%`_config($with_mem(z, x, (i + ao.OFFSET_memarg!`%`_u32.0), (n / 8), b*{b : byte}), [])) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr((Inn : Inn <: numtype), c) STORE_admininstr(nt, ?(n), x, ao)]), `%;%`_config($with_mem(z, x, (i + ao.OFFSET_memarg!`%`_u32.0), (n / 8), b*{b : byte}), [])) -- if (b*{b : byte} = $ibytes(n, $wrap($size((Inn : Inn <: numtype)), n, c))) ;; 8-reduction.watsup @@ -5331,12 +5331,12 @@ relation Step: `%~>%`(config, config) ;; 8-reduction.watsup rule vstore_lane-oob{z : state, i : nat, c : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : nat}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c) VSTORE_LANE_admininstr(V128_vectype, `%`_sz(N), x, ao, `%`_laneidx(j))]), `%;%`_config(z, [TRAP_admininstr])) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c) VSTORE_LANE_admininstr(V128_vectype, N, x, ao, `%`_laneidx(j))]), `%;%`_config(z, [TRAP_admininstr])) -- if (((i + ao.OFFSET_memarg!`%`_u32.0) + N) > |$mem(z, x).BYTES_meminst|) ;; 8-reduction.watsup rule vstore_lane-val{z : state, i : nat, c : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : nat, b* : byte*, Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c) VSTORE_LANE_admininstr(V128_vectype, `%`_sz(N), x, ao, `%`_laneidx(j))]), `%;%`_config($with_mem(z, x, (i + ao.OFFSET_memarg!`%`_u32.0), (N / 8), b*{b : byte}), [])) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c) VSTORE_LANE_admininstr(V128_vectype, N, x, ao, `%`_laneidx(j))]), `%;%`_config($with_mem(z, x, (i + ao.OFFSET_memarg!`%`_u32.0), (N / 8), b*{b : byte}), [])) -- if (N = $lsize((Jnn : Jnn <: lanetype))) -- if (M = (128 / N)) -- if (b*{b : byte} = $ibytes(N, `%`_iN($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j]!`%`_lane_.0))) @@ -6411,15 +6411,15 @@ syntax vvtestop = ;; 1-syntax.watsup syntax vunop_(shape : shape) ;; 1-syntax.watsup - syntax vunop_{Jnn : Jnn, N : N}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(N))) = + syntax vunop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | ABS | NEG | POPCNT{Jnn : Jnn} - -- if (Jnn = I8_Jnn) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 8) ;; 1-syntax.watsup - syntax vunop_{Fnn : Fnn, N : N}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(N))) = + syntax vunop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = | ABS | NEG | SQRT @@ -6432,7 +6432,7 @@ syntax vunop_(shape : shape) ;; 1-syntax.watsup syntax vbinop_(shape : shape) ;; 1-syntax.watsup - syntax vbinop_{Jnn : Jnn, N : N}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(N))) = + syntax vbinop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | ADD | SUB | ADD_SAT{sx : sx}(sx : sx) @@ -6452,7 +6452,7 @@ syntax vbinop_(shape : shape) ;; 1-syntax.watsup - syntax vbinop_{Fnn : Fnn, N : N}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(N))) = + syntax vbinop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = | ADD | SUB | MUL @@ -6464,13 +6464,13 @@ syntax vbinop_(shape : shape) ;; 1-syntax.watsup -syntax vtestop_{Jnn : Jnn, N : N}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(N))) = +syntax vtestop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | ALL_TRUE ;; 1-syntax.watsup syntax vrelop_(shape : shape) ;; 1-syntax.watsup - syntax vrelop_{Jnn : Jnn, N : N}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(N))) = + syntax vrelop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | EQ | NE | LT{sx : sx}(sx : sx) @@ -6484,7 +6484,7 @@ syntax vrelop_(shape : shape) ;; 1-syntax.watsup - syntax vrelop_{Fnn : Fnn, N : N}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(N))) = + syntax vrelop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = | EQ | NE | LT @@ -6496,25 +6496,25 @@ syntax vrelop_(shape : shape) ;; 1-syntax.watsup syntax vcvtop_(shape_1 : shape, shape_2 : shape) ;; 1-syntax.watsup - syntax vcvtop_{Jnn_1 : Jnn, N_1 : N, Jnn_2 : Jnn, N_2 : N}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(N_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(N_2))) = + syntax vcvtop_{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) = | EXTEND{Jnn_2 : Jnn, Jnn_1 : Jnn} -- if ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) ;; 1-syntax.watsup - syntax vcvtop_{Jnn_1 : Jnn, N_1 : N, Fnn_2 : Fnn, N_2 : N}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(N_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(N_2))) = + syntax vcvtop_{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) = | CONVERT -- if (($sizenn2((Fnn_2 : Fnn <: numtype)) >= $lsizenn1((Jnn_1 : Jnn <: lanetype))) /\ ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32)) ;; 1-syntax.watsup - syntax vcvtop_{Fnn_1 : Fnn, N_1 : N, Jnn_2 : Jnn, N_2 : N}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(N_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(N_2))) = + syntax vcvtop_{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) = | TRUNC_SAT -- if (($sizenn1((Fnn_1 : Fnn <: numtype)) >= $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) ;; 1-syntax.watsup - syntax vcvtop_{Fnn_1 : Fnn, N_1 : N, Fnn_2 : Fnn, N_2 : N}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(N_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(N_2))) = + syntax vcvtop_{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) = | DEMOTE -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) > $sizenn2((Fnn_2 : Fnn <: numtype))) | PROMOTE @@ -6537,17 +6537,17 @@ syntax zero_{shape_1 : shape, shape_2 : shape}(shape_1, shape_2) = -- if (($lanetype(shape_1) = F64_lanetype) /\ ($lsize($lanetype(shape_2)) = 32)) ;; 1-syntax.watsup -syntax vshiftop_{Jnn : Jnn, N : N}(`%X%`_ishape(Jnn, `%`_dim(N))) = +syntax vshiftop_{Jnn : Jnn, M : M}(`%X%`_ishape(Jnn, `%`_dim(M))) = | SHL | SHR{sx : sx}(sx : sx) ;; 1-syntax.watsup -syntax vextunop_{Jnn : Jnn, N : N}(`%X%`_ishape(Jnn, `%`_dim(N))) = +syntax vextunop_{Jnn : Jnn, M : M}(`%X%`_ishape(Jnn, `%`_dim(M))) = | EXTADD_PAIRWISE -- if ((16 <= $lsizenn((Jnn : Jnn <: lanetype))) /\ ($lsizenn((Jnn : Jnn <: lanetype)) <= 32)) ;; 1-syntax.watsup -syntax vextbinop_{Jnn : Jnn, N : N}(`%X%`_ishape(Jnn, `%`_dim(N))) = +syntax vextbinop_{Jnn : Jnn, M : M}(`%X%`_ishape(Jnn, `%`_dim(M))) = | EXTMUL{half : half}(half : half) | DOT{Jnn : Jnn} -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 32) @@ -6570,11 +6570,6 @@ syntax blocktype = | _RESULT{valtype? : valtype?}(valtype?{valtype : valtype} : valtype?) | _IDX{funcidx : funcidx}(funcidx : funcidx) -;; 1-syntax.watsup -syntax sz = - | `%`{i : nat}(i : nat) - -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) - ;; 1-syntax.watsup rec { @@ -6608,7 +6603,7 @@ syntax instr = | RELOP{numtype : numtype, relop_ : relop_(numtype)}(numtype : numtype, relop_ : relop_(numtype)) | CVTOP{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop, sx? : sx?}(numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop, sx?{sx : sx} : sx?) -- if (numtype_1 =/= numtype_2) - | EXTEND{numtype : numtype, n : n}(numtype : numtype, n : n) + | EXTEND{numtype : numtype, N : N}(numtype : numtype, N : N) | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) | VVUNOP{vectype : vectype, vvunop : vvunop}(vectype : vectype, vvunop : vvunop) | VVBINOP{vectype : vectype, vvbinop : vvbinop}(vectype : vectype, vvbinop : vvbinop) @@ -6624,10 +6619,6 @@ syntax instr = -- if (ishape = `%X%`_ishape(I8_Jnn, `%`_dim(16))) | VSHUFFLE{ishape : ishape, laneidx* : laneidx*}(ishape : ishape, laneidx*{laneidx : laneidx} : laneidx*) -- if ((ishape = `%X%`_ishape(I8_Jnn, `%`_dim(16))) /\ (|laneidx*{laneidx : laneidx}| = 16)) - | VSPLAT{shape : shape}(shape : shape) - | VEXTRACT_LANE{shape : shape, sx? : sx?, laneidx : laneidx, numtype : numtype}(shape : shape, sx?{sx : sx} : sx?, laneidx : laneidx) - -- if (($lanetype(shape) = (numtype : numtype <: lanetype)) <=> (sx?{sx : sx} = ?())) - | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) | VEXTUNOP{ishape_1 : ishape, ishape_2 : ishape, vextunop_ : vextunop_(ishape_1), sx : sx}(ishape_1 : ishape, ishape_2 : ishape, vextunop_ : vextunop_(ishape_1), sx : sx) -- if ($lsize($lanetype((ishape_1 : ishape <: shape))) = (2 * $lsize($lanetype((ishape_2 : ishape <: shape))))) | VEXTBINOP{ishape_1 : ishape, ishape_2 : ishape, vextbinop_ : vextbinop_(ishape_1), sx : sx}(ishape_1 : ishape, ishape_2 : ishape, vextbinop_ : vextbinop_(ishape_1), sx : sx) @@ -6636,6 +6627,10 @@ syntax instr = -- if (($lsize($lanetype((ishape_2 : ishape <: shape))) = (2 * $lsize($lanetype((ishape_1 : ishape <: shape))))) /\ ((2 * $lsize($lanetype((ishape_1 : ishape <: shape)))) <= 32)) | VCVTOP{shape_1 : shape, shape_2 : shape, vcvtop_ : vcvtop_(shape_2, shape_1), half_? : half_(shape_2, shape_1)?, sx? : sx?, zero_? : zero_(shape_2, shape_1)?}(shape_1 : shape, shape_2 : shape, vcvtop_ : vcvtop_(shape_2, shape_1), half_?{half_ : half_(shape_2, shape_1)} : half_(shape_2, shape_1)?, sx?{sx : sx} : sx?, zero_?{zero_ : zero_(shape_2, shape_1)} : zero_(shape_2, shape_1)?) -- if ($lanetype(shape_1) =/= $lanetype(shape_2)) + | VSPLAT{shape : shape}(shape : shape) + | VEXTRACT_LANE{shape : shape, sx? : sx?, laneidx : laneidx, numtype : numtype}(shape : shape, sx?{sx : sx} : sx?, laneidx : laneidx) + -- if (($lanetype(shape) = (numtype : numtype <: lanetype)) <=> (sx?{sx : sx} = ?())) + | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) | REF.NULL{heaptype : heaptype}(heaptype : heaptype) | REF.IS_NULL | REF.AS_NON_NULL @@ -6676,14 +6671,14 @@ syntax instr = | TABLE.COPY{tableidx : tableidx}(tableidx : tableidx, tableidx) | TABLE.INIT{tableidx : tableidx, elemidx : elemidx}(tableidx : tableidx, elemidx : elemidx) | ELEM.DROP{elemidx : elemidx}(elemidx : elemidx) - | `LOAD%(_)%?%%`{numtype : numtype, sz? : sz?, sx? : sx?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, (sz, sx)?{sx : sx, sz : sz} : (sz, sx)?, memidx : memidx, memarg : memarg) - -- (if ((numtype = (Inn : Inn <: numtype)) /\ (sz!`%`_sz.0 < $size((Inn : Inn <: numtype)))))?{Inn : Inn, sz : sz} - | STORE{numtype : numtype, sz? : sz?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, sz?{sz : sz} : sz?, memidx : memidx, memarg : memarg) - -- (if ((numtype = (Inn : Inn <: numtype)) /\ (sz!`%`_sz.0 < $size((Inn : Inn <: numtype)))))?{Inn : Inn, sz : sz} + | `LOAD%(_)%?%%`{numtype : numtype, N? : N?, sx? : sx?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, (N, sx)?{N : N, sx : sx} : (N, sx)?, memidx : memidx, memarg : memarg) + -- (if ((numtype = (Inn : Inn <: numtype)) /\ (N < $size((Inn : Inn <: numtype)))))?{Inn : Inn, N : nat} + | STORE{numtype : numtype, N? : N?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, N?{N : N} : N?, memidx : memidx, memarg : memarg) + -- (if ((numtype = (Inn : Inn <: numtype)) /\ (N < $size((Inn : Inn <: numtype)))))?{Inn : Inn, N : nat} | VLOAD{vectype : vectype, vloadop? : vloadop?, memidx : memidx, memarg : memarg}(vectype : vectype, vloadop?{vloadop : vloadop} : vloadop?, memidx : memidx, memarg : memarg) - | VLOAD_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VLOAD_LANE{vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx) | VSTORE{vectype : vectype, memidx : memidx, memarg : memarg}(vectype : vectype, memidx : memidx, memarg : memarg) - | VSTORE_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE_LANE{vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx) | MEMORY.SIZE{memidx : memidx}(memidx : memidx) | MEMORY.GROW{memidx : memidx}(memidx : memidx) | MEMORY.FILL{memidx : memidx}(memidx : memidx) @@ -6692,6 +6687,11 @@ syntax instr = | DATA.DROP{dataidx : dataidx}(dataidx : dataidx) } +;; 1-syntax.watsup +syntax sz = + | `%`{i : nat}(i : nat) + -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) + ;; 1-syntax.watsup syntax expr = instr* @@ -8106,7 +8106,7 @@ syntax admininstr = | RELOP{numtype : numtype, relop_ : relop_(numtype)}(numtype : numtype, relop_ : relop_(numtype)) | CVTOP{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop, sx? : sx?}(numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop, sx?{sx : sx} : sx?) -- if (numtype_1 =/= numtype_2) - | EXTEND{numtype : numtype, n : n}(numtype : numtype, n : n) + | EXTEND{numtype : numtype, N : N}(numtype : numtype, N : N) | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) | VVUNOP{vectype : vectype, vvunop : vvunop}(vectype : vectype, vvunop : vvunop) | VVBINOP{vectype : vectype, vvbinop : vvbinop}(vectype : vectype, vvbinop : vvbinop) @@ -8122,10 +8122,6 @@ syntax admininstr = -- if (ishape = `%X%`_ishape(I8_Jnn, `%`_dim(16))) | VSHUFFLE{ishape : ishape, laneidx* : laneidx*}(ishape : ishape, laneidx*{laneidx : laneidx} : laneidx*) -- if ((ishape = `%X%`_ishape(I8_Jnn, `%`_dim(16))) /\ (|laneidx*{laneidx : laneidx}| = 16)) - | VSPLAT{shape : shape}(shape : shape) - | VEXTRACT_LANE{shape : shape, sx? : sx?, laneidx : laneidx, numtype : numtype}(shape : shape, sx?{sx : sx} : sx?, laneidx : laneidx) - -- if (($lanetype(shape) = (numtype : numtype <: lanetype)) <=> (sx?{sx : sx} = ?())) - | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) | VEXTUNOP{ishape_1 : ishape, ishape_2 : ishape, vextunop_ : vextunop_(ishape_1), sx : sx}(ishape_1 : ishape, ishape_2 : ishape, vextunop_ : vextunop_(ishape_1), sx : sx) -- if ($lsize($lanetype((ishape_1 : ishape <: shape))) = (2 * $lsize($lanetype((ishape_2 : ishape <: shape))))) | VEXTBINOP{ishape_1 : ishape, ishape_2 : ishape, vextbinop_ : vextbinop_(ishape_1), sx : sx}(ishape_1 : ishape, ishape_2 : ishape, vextbinop_ : vextbinop_(ishape_1), sx : sx) @@ -8134,6 +8130,10 @@ syntax admininstr = -- if (($lsize($lanetype((ishape_2 : ishape <: shape))) = (2 * $lsize($lanetype((ishape_1 : ishape <: shape))))) /\ ((2 * $lsize($lanetype((ishape_1 : ishape <: shape)))) <= 32)) | VCVTOP{shape_1 : shape, shape_2 : shape, vcvtop_ : vcvtop_(shape_2, shape_1), half_? : half_(shape_2, shape_1)?, sx? : sx?, zero_? : zero_(shape_2, shape_1)?}(shape_1 : shape, shape_2 : shape, vcvtop_ : vcvtop_(shape_2, shape_1), half_?{half_ : half_(shape_2, shape_1)} : half_(shape_2, shape_1)?, sx?{sx : sx} : sx?, zero_?{zero_ : zero_(shape_2, shape_1)} : zero_(shape_2, shape_1)?) -- if ($lanetype(shape_1) =/= $lanetype(shape_2)) + | VSPLAT{shape : shape}(shape : shape) + | VEXTRACT_LANE{shape : shape, sx? : sx?, laneidx : laneidx, numtype : numtype}(shape : shape, sx?{sx : sx} : sx?, laneidx : laneidx) + -- if (($lanetype(shape) = (numtype : numtype <: lanetype)) <=> (sx?{sx : sx} = ?())) + | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) | REF.NULL{heaptype : heaptype}(heaptype : heaptype) | REF.IS_NULL | REF.AS_NON_NULL @@ -8174,14 +8174,14 @@ syntax admininstr = | TABLE.COPY{tableidx : tableidx}(tableidx : tableidx, tableidx) | TABLE.INIT{tableidx : tableidx, elemidx : elemidx}(tableidx : tableidx, elemidx : elemidx) | ELEM.DROP{elemidx : elemidx}(elemidx : elemidx) - | `LOAD%(_)%?%%`{numtype : numtype, sz? : sz?, sx? : sx?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, (sz, sx)?{sx : sx, sz : sz} : (sz, sx)?, memidx : memidx, memarg : memarg) - -- (if ((numtype = (Inn : Inn <: numtype)) /\ (sz!`%`_sz.0 < $size((Inn : Inn <: numtype)))))?{Inn : Inn, sz : sz} - | STORE{numtype : numtype, sz? : sz?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, sz?{sz : sz} : sz?, memidx : memidx, memarg : memarg) - -- (if ((numtype = (Inn : Inn <: numtype)) /\ (sz!`%`_sz.0 < $size((Inn : Inn <: numtype)))))?{Inn : Inn, sz : sz} + | `LOAD%(_)%?%%`{numtype : numtype, N? : N?, sx? : sx?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, (N, sx)?{N : N, sx : sx} : (N, sx)?, memidx : memidx, memarg : memarg) + -- (if ((numtype = (Inn : Inn <: numtype)) /\ (N < $size((Inn : Inn <: numtype)))))?{Inn : Inn, N : nat} + | STORE{numtype : numtype, N? : N?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, N?{N : N} : N?, memidx : memidx, memarg : memarg) + -- (if ((numtype = (Inn : Inn <: numtype)) /\ (N < $size((Inn : Inn <: numtype)))))?{Inn : Inn, N : nat} | VLOAD{vectype : vectype, vloadop? : vloadop?, memidx : memidx, memarg : memarg}(vectype : vectype, vloadop?{vloadop : vloadop} : vloadop?, memidx : memidx, memarg : memarg) - | VLOAD_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VLOAD_LANE{vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx) | VSTORE{vectype : vectype, memidx : memidx, memarg : memarg}(vectype : vectype, memidx : memidx, memarg : memarg) - | VSTORE_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE_LANE{vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx) | MEMORY.SIZE{memidx : memidx}(memidx : memidx) | MEMORY.GROW{memidx : memidx}(memidx : memidx) | MEMORY.FILL{memidx : memidx}(memidx : memidx) @@ -9428,25 +9428,25 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - ;; 6-typing.watsup:880.1-881.40 - rule vunop{C : context, sh : shape, vunop_sh : vunop_(sh)}: - `%|-%:%`(C, VUNOP_instr(sh, vunop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + ;; 6-typing.watsup:880.1-881.37 + rule vunop{C : context, sh : shape, vunop : vunop_(sh)}: + `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; 6-typing.watsup:883.1-884.47 - rule vbinop{C : context, sh : shape, vbinop_sh : vbinop_(sh)}: - `%|-%:%`(C, VBINOP_instr(sh, vbinop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + ;; 6-typing.watsup:883.1-884.44 + rule vbinop{C : context, sh : shape, vbinop : vbinop_(sh)}: + `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; 6-typing.watsup:886.1-887.43 - rule vtestop{C : context, sh : shape, vtestop_sh : vtestop_(sh)}: - `%|-%:%`(C, VTESTOP_instr(sh, vtestop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + ;; 6-typing.watsup:886.1-887.40 + rule vtestop{C : context, sh : shape, vtestop : vtestop_(sh)}: + `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - ;; 6-typing.watsup:889.1-890.47 - rule vrelop{C : context, sh : shape, vrelop_sh : vrelop_(sh)}: - `%|-%:%`(C, VRELOP_instr(sh, vrelop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + ;; 6-typing.watsup:889.1-890.44 + rule vrelop{C : context, sh : shape, vrelop : vrelop_(sh)}: + `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; 6-typing.watsup:892.1-893.50 - rule vshiftop{C : context, sh : ishape, vshiftop_sh : vshiftop_(sh)}: - `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + ;; 6-typing.watsup:892.1-893.47 + rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_(sh)}: + `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; 6-typing.watsup:895.1-896.33 rule vbitmask{C : context, sh : ishape}: @@ -9595,7 +9595,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; 6-typing.watsup:1025.1-1030.29 rule load{C : context, nt : numtype, n? : n?, sx? : sx?, x : idx, memarg : memarg, mt : memtype, Inn : Inn}: - `%|-%:%`(C, `LOAD%(_)%?%%`_instr(nt, (`%`_sz(n), sx)?{n : nat, sx : sx}, x, memarg), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(C, `LOAD%(_)%?%%`_instr(nt, (n, sx)?{n : N, sx : sx}, x, memarg), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([(nt : numtype <: valtype)]))) -- if (C.MEMS_context[x!`%`_idx.0] = mt) -- if ((2 ^ memarg.ALIGN_memarg!`%`_u32.0) <= ($size(nt) / 8)) -- (if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) <= (n / 8)) /\ ((n / 8) < ($size(nt) / 8))))?{n : nat} @@ -9603,7 +9603,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; 6-typing.watsup:1032.1-1037.29 rule store{C : context, nt : numtype, n? : n?, x : idx, memarg : memarg, mt : memtype, Inn : Inn}: - `%|-%:%`(C, STORE_instr(nt, `%`_sz(n)?{n : nat}, x, memarg), `%->_%%`_instrtype(`%`_resulttype([I32_valtype (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + `%|-%:%`(C, STORE_instr(nt, n?{n : N}, x, memarg), `%->_%%`_instrtype(`%`_resulttype([I32_valtype (nt : numtype <: valtype)]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x!`%`_idx.0] = mt) -- if ((2 ^ memarg.ALIGN_memarg!`%`_u32.0) <= ($size(nt) / 8)) -- (if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) <= (n / 8)) /\ ((n / 8) < ($size(nt) / 8))))?{n : nat} @@ -9629,7 +9629,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; 6-typing.watsup:1054.1-1058.29 rule vload_lane{C : context, n : n, x : idx, memarg : memarg, laneidx : laneidx, mt : memtype}: - `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(n), x, memarg, laneidx), `%->_%%`_instrtype(`%`_resulttype([I32_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, n, x, memarg, laneidx), `%->_%%`_instrtype(`%`_resulttype([I32_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- if (C.MEMS_context[x!`%`_idx.0] = mt) -- if ((2 ^ memarg.ALIGN_memarg!`%`_u32.0) < (n / 8)) -- if (laneidx!`%`_laneidx.0 < (128 / n)) @@ -9642,7 +9642,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; 6-typing.watsup:1065.1-1069.29 rule vstore_lane{C : context, n : n, x : idx, memarg : memarg, laneidx : laneidx, mt : memtype}: - `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(n), x, memarg, laneidx), `%->_%%`_instrtype(`%`_resulttype([I32_valtype V128_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, n, x, memarg, laneidx), `%->_%%`_instrtype(`%`_resulttype([I32_valtype V128_valtype]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x!`%`_idx.0] = mt) -- if ((2 ^ memarg.ALIGN_memarg!`%`_u32.0) < (n / 8)) -- if (laneidx!`%`_laneidx.0 < (128 / n)) @@ -10737,12 +10737,12 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule load-pack-oob{z : state, i : nat, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) `LOAD%(_)%?%%`_admininstr((Inn : Inn <: numtype), ?((`%`_sz(n), sx)), x, ao)]), [TRAP_admininstr]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) `LOAD%(_)%?%%`_admininstr((Inn : Inn <: numtype), ?((n, sx)), x, ao)]), [TRAP_admininstr]) -- if (((i + ao.OFFSET_memarg!`%`_u32.0) + (n / 8)) > |$mem(z, x).BYTES_meminst|) ;; 8-reduction.watsup rule load-pack-val{z : state, i : nat, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN(n)}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) `LOAD%(_)%?%%`_admininstr((Inn : Inn <: numtype), ?((`%`_sz(n), sx)), x, ao)]), [CONST_admininstr((Inn : Inn <: numtype), $ext(n, $size((Inn : Inn <: numtype)), sx, c))]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) `LOAD%(_)%?%%`_admininstr((Inn : Inn <: numtype), ?((n, sx)), x, ao)]), [CONST_admininstr((Inn : Inn <: numtype), $ext(n, $size((Inn : Inn <: numtype)), sx, c))]) -- if ($ibytes(n, c) = $mem(z, x).BYTES_meminst[(i + ao.OFFSET_memarg!`%`_u32.0) : (n / 8)]) ;; 8-reduction.watsup @@ -10793,12 +10793,12 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule vload_lane-oob{z : state, i : nat, c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : nat}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c_1) VLOAD_LANE_admininstr(V128_vectype, `%`_sz(N), x, ao, `%`_laneidx(j))]), [TRAP_admininstr]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c_1) VLOAD_LANE_admininstr(V128_vectype, N, x, ao, `%`_laneidx(j))]), [TRAP_admininstr]) -- if (((i + ao.OFFSET_memarg!`%`_u32.0) + (N / 8)) > |$mem(z, x).BYTES_meminst|) ;; 8-reduction.watsup rule vload_lane-val{z : state, i : nat, c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : nat, c : vec_(V128_Vnn), k : nat, Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c_1) VLOAD_LANE_admininstr(V128_vectype, `%`_sz(N), x, ao, `%`_laneidx(j))]), [VCONST_admininstr(V128_vectype, c)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c_1) VLOAD_LANE_admininstr(V128_vectype, N, x, ao, `%`_laneidx(j))]), [VCONST_admininstr(V128_vectype, c)]) -- if ($ibytes(N, `%`_iN(k)) = $mem(z, x).BYTES_meminst[(i + ao.OFFSET_memarg!`%`_u32.0) : (N / 8)]) -- if (N = $lsize((Jnn : Jnn <: lanetype))) -- if (M = ($vsize(V128_vectype) / N)) @@ -10822,7 +10822,7 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule memory.fill-succ{z : state, i : nat, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) (val : val <: admininstr) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.FILL_admininstr(x)]), [CONST_admininstr(I32_numtype, `%`_num_(i)) (val : val <: admininstr) STORE_admininstr(I32_numtype, ?(`%`_sz(8)), x, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((i + 1))) (val : val <: admininstr) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.FILL_admininstr(x)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) (val : val <: admininstr) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.FILL_admininstr(x)]), [CONST_admininstr(I32_numtype, `%`_num_(i)) (val : val <: admininstr) STORE_admininstr(I32_numtype, ?(8), x, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((i + 1))) (val : val <: admininstr) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.FILL_admininstr(x)]) -- otherwise ;; 8-reduction.watsup @@ -10838,13 +10838,13 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule memory.copy-le{z : state, i_1 : nat, i_2 : nat, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.COPY_admininstr(x_1, x_2)]), [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) `LOAD%(_)%?%%`_admininstr(I32_numtype, ?((`%`_sz(8), U_sx)), x_2, $memarg0) STORE_admininstr(I32_numtype, ?(`%`_sz(8)), x_1, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((i_1 + 1))) CONST_admininstr(I32_numtype, `%`_num_((i_2 + 1))) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.COPY_admininstr(x_1, x_2)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.COPY_admininstr(x_1, x_2)]), [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) `LOAD%(_)%?%%`_admininstr(I32_numtype, ?((8, U_sx)), x_2, $memarg0) STORE_admininstr(I32_numtype, ?(8), x_1, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((i_1 + 1))) CONST_admininstr(I32_numtype, `%`_num_((i_2 + 1))) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.COPY_admininstr(x_1, x_2)]) -- otherwise -- if (i_1 <= i_2) ;; 8-reduction.watsup rule memory.copy-gt{z : state, i_1 : nat, i_2 : nat, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.COPY_admininstr(x_1, x_2)]), [CONST_admininstr(I32_numtype, `%`_num_(((i_1 + n) - 1))) CONST_admininstr(I32_numtype, `%`_num_(((i_2 + n) - 1))) `LOAD%(_)%?%%`_admininstr(I32_numtype, ?((`%`_sz(8), U_sx)), x_2, $memarg0) STORE_admininstr(I32_numtype, ?(`%`_sz(8)), x_1, $memarg0) CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.COPY_admininstr(x_1, x_2)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.COPY_admininstr(x_1, x_2)]), [CONST_admininstr(I32_numtype, `%`_num_(((i_1 + n) - 1))) CONST_admininstr(I32_numtype, `%`_num_(((i_2 + n) - 1))) `LOAD%(_)%?%%`_admininstr(I32_numtype, ?((8, U_sx)), x_2, $memarg0) STORE_admininstr(I32_numtype, ?(8), x_1, $memarg0) CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.COPY_admininstr(x_1, x_2)]) -- otherwise ;; 8-reduction.watsup @@ -10860,7 +10860,7 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule memory.init-succ{z : state, j : nat, i : nat, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(j)) CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.INIT_admininstr(x, y)]), [CONST_admininstr(I32_numtype, `%`_num_(j)) CONST_admininstr(I32_numtype, `%`_num_($data(z, y).BYTES_datainst[i]!`%`_byte.0)) STORE_admininstr(I32_numtype, ?(`%`_sz(8)), x, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((j + 1))) CONST_admininstr(I32_numtype, `%`_num_((i + 1))) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.INIT_admininstr(x, y)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(j)) CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.INIT_admininstr(x, y)]), [CONST_admininstr(I32_numtype, `%`_num_(j)) CONST_admininstr(I32_numtype, `%`_num_($data(z, y).BYTES_datainst[i]!`%`_byte.0)) STORE_admininstr(I32_numtype, ?(8), x, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((j + 1))) CONST_admininstr(I32_numtype, `%`_num_((i + 1))) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.INIT_admininstr(x, y)]) -- otherwise ;; 8-reduction.watsup @@ -10954,12 +10954,12 @@ relation Step: `%~>%`(config, config) ;; 8-reduction.watsup rule store-pack-oob{z : state, i : nat, Inn : Inn, c : num_((Inn : Inn <: numtype)), nt : numtype, n : n, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr((Inn : Inn <: numtype), c) STORE_admininstr(nt, ?(`%`_sz(n)), x, ao)]), `%;%`_config(z, [TRAP_admininstr])) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr((Inn : Inn <: numtype), c) STORE_admininstr(nt, ?(n), x, ao)]), `%;%`_config(z, [TRAP_admininstr])) -- if (((i + ao.OFFSET_memarg!`%`_u32.0) + (n / 8)) > |$mem(z, x).BYTES_meminst|) ;; 8-reduction.watsup rule store-pack-val{z : state, i : nat, Inn : Inn, c : num_((Inn : Inn <: numtype)), nt : numtype, n : n, x : idx, ao : memarg, b* : byte*}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr((Inn : Inn <: numtype), c) STORE_admininstr(nt, ?(`%`_sz(n)), x, ao)]), `%;%`_config($with_mem(z, x, (i + ao.OFFSET_memarg!`%`_u32.0), (n / 8), b*{b : byte}), [])) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr((Inn : Inn <: numtype), c) STORE_admininstr(nt, ?(n), x, ao)]), `%;%`_config($with_mem(z, x, (i + ao.OFFSET_memarg!`%`_u32.0), (n / 8), b*{b : byte}), [])) -- if (b*{b : byte} = $ibytes(n, $wrap($size((Inn : Inn <: numtype)), n, c))) ;; 8-reduction.watsup @@ -10974,12 +10974,12 @@ relation Step: `%~>%`(config, config) ;; 8-reduction.watsup rule vstore_lane-oob{z : state, i : nat, c : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : nat}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c) VSTORE_LANE_admininstr(V128_vectype, `%`_sz(N), x, ao, `%`_laneidx(j))]), `%;%`_config(z, [TRAP_admininstr])) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c) VSTORE_LANE_admininstr(V128_vectype, N, x, ao, `%`_laneidx(j))]), `%;%`_config(z, [TRAP_admininstr])) -- if (((i + ao.OFFSET_memarg!`%`_u32.0) + N) > |$mem(z, x).BYTES_meminst|) ;; 8-reduction.watsup rule vstore_lane-val{z : state, i : nat, c : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : nat, b* : byte*, Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c) VSTORE_LANE_admininstr(V128_vectype, `%`_sz(N), x, ao, `%`_laneidx(j))]), `%;%`_config($with_mem(z, x, (i + ao.OFFSET_memarg!`%`_u32.0), (N / 8), b*{b : byte}), [])) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c) VSTORE_LANE_admininstr(V128_vectype, N, x, ao, `%`_laneidx(j))]), `%;%`_config($with_mem(z, x, (i + ao.OFFSET_memarg!`%`_u32.0), (N / 8), b*{b : byte}), [])) -- if (N = $lsize((Jnn : Jnn <: lanetype))) -- if (M = (128 / N)) -- if (b*{b : byte} = $ibytes(N, `%`_iN($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j]!`%`_lane_.0))) @@ -12054,15 +12054,15 @@ syntax vvtestop = ;; 1-syntax.watsup syntax vunop_(shape : shape) ;; 1-syntax.watsup - syntax vunop_{Jnn : Jnn, N : N}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(N))) = + syntax vunop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | ABS | NEG | POPCNT{Jnn : Jnn} - -- if (Jnn = I8_Jnn) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 8) ;; 1-syntax.watsup - syntax vunop_{Fnn : Fnn, N : N}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(N))) = + syntax vunop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = | ABS | NEG | SQRT @@ -12075,7 +12075,7 @@ syntax vunop_(shape : shape) ;; 1-syntax.watsup syntax vbinop_(shape : shape) ;; 1-syntax.watsup - syntax vbinop_{Jnn : Jnn, N : N}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(N))) = + syntax vbinop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | ADD | SUB | ADD_SAT{sx : sx}(sx : sx) @@ -12095,7 +12095,7 @@ syntax vbinop_(shape : shape) ;; 1-syntax.watsup - syntax vbinop_{Fnn : Fnn, N : N}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(N))) = + syntax vbinop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = | ADD | SUB | MUL @@ -12107,13 +12107,13 @@ syntax vbinop_(shape : shape) ;; 1-syntax.watsup -syntax vtestop_{Jnn : Jnn, N : N}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(N))) = +syntax vtestop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | ALL_TRUE ;; 1-syntax.watsup syntax vrelop_(shape : shape) ;; 1-syntax.watsup - syntax vrelop_{Jnn : Jnn, N : N}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(N))) = + syntax vrelop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | EQ | NE | LT{sx : sx}(sx : sx) @@ -12127,7 +12127,7 @@ syntax vrelop_(shape : shape) ;; 1-syntax.watsup - syntax vrelop_{Fnn : Fnn, N : N}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(N))) = + syntax vrelop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = | EQ | NE | LT @@ -12139,25 +12139,25 @@ syntax vrelop_(shape : shape) ;; 1-syntax.watsup syntax vcvtop_(shape_1 : shape, shape_2 : shape) ;; 1-syntax.watsup - syntax vcvtop_{Jnn_1 : Jnn, N_1 : N, Jnn_2 : Jnn, N_2 : N}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(N_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(N_2))) = + syntax vcvtop_{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) = | EXTEND{Jnn_2 : Jnn, Jnn_1 : Jnn} -- if ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) ;; 1-syntax.watsup - syntax vcvtop_{Jnn_1 : Jnn, N_1 : N, Fnn_2 : Fnn, N_2 : N}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(N_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(N_2))) = + syntax vcvtop_{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) = | CONVERT -- if (($sizenn2((Fnn_2 : Fnn <: numtype)) >= $lsizenn1((Jnn_1 : Jnn <: lanetype))) /\ ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32)) ;; 1-syntax.watsup - syntax vcvtop_{Fnn_1 : Fnn, N_1 : N, Jnn_2 : Jnn, N_2 : N}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(N_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(N_2))) = + syntax vcvtop_{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) = | TRUNC_SAT -- if (($sizenn1((Fnn_1 : Fnn <: numtype)) >= $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) ;; 1-syntax.watsup - syntax vcvtop_{Fnn_1 : Fnn, N_1 : N, Fnn_2 : Fnn, N_2 : N}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(N_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(N_2))) = + syntax vcvtop_{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) = | DEMOTE -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) > $sizenn2((Fnn_2 : Fnn <: numtype))) | PROMOTE @@ -12180,17 +12180,17 @@ syntax zero_{shape_1 : shape, shape_2 : shape}(shape_1, shape_2) = -- if (($lanetype(shape_1) = F64_lanetype) /\ ($lsize($lanetype(shape_2)) = 32)) ;; 1-syntax.watsup -syntax vshiftop_{Jnn : Jnn, N : N}(`%X%`_ishape(Jnn, `%`_dim(N))) = +syntax vshiftop_{Jnn : Jnn, M : M}(`%X%`_ishape(Jnn, `%`_dim(M))) = | SHL | SHR{sx : sx}(sx : sx) ;; 1-syntax.watsup -syntax vextunop_{Jnn : Jnn, N : N}(`%X%`_ishape(Jnn, `%`_dim(N))) = +syntax vextunop_{Jnn : Jnn, M : M}(`%X%`_ishape(Jnn, `%`_dim(M))) = | EXTADD_PAIRWISE -- if ((16 <= $lsizenn((Jnn : Jnn <: lanetype))) /\ ($lsizenn((Jnn : Jnn <: lanetype)) <= 32)) ;; 1-syntax.watsup -syntax vextbinop_{Jnn : Jnn, N : N}(`%X%`_ishape(Jnn, `%`_dim(N))) = +syntax vextbinop_{Jnn : Jnn, M : M}(`%X%`_ishape(Jnn, `%`_dim(M))) = | EXTMUL{half : half}(half : half) | DOT{Jnn : Jnn} -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 32) @@ -12213,11 +12213,6 @@ syntax blocktype = | _RESULT{valtype? : valtype?}(valtype?{valtype : valtype} : valtype?) | _IDX{funcidx : funcidx}(funcidx : funcidx) -;; 1-syntax.watsup -syntax sz = - | `%`{i : nat}(i : nat) - -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) - ;; 1-syntax.watsup rec { @@ -12251,7 +12246,7 @@ syntax instr = | RELOP{numtype : numtype, relop_ : relop_(numtype)}(numtype : numtype, relop_ : relop_(numtype)) | CVTOP{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop, sx? : sx?}(numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop, sx?{sx : sx} : sx?) -- if (numtype_1 =/= numtype_2) - | EXTEND{numtype : numtype, n : n}(numtype : numtype, n : n) + | EXTEND{numtype : numtype, N : N}(numtype : numtype, N : N) | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) | VVUNOP{vectype : vectype, vvunop : vvunop}(vectype : vectype, vvunop : vvunop) | VVBINOP{vectype : vectype, vvbinop : vvbinop}(vectype : vectype, vvbinop : vvbinop) @@ -12267,10 +12262,6 @@ syntax instr = -- if (ishape = `%X%`_ishape(I8_Jnn, `%`_dim(16))) | VSHUFFLE{ishape : ishape, laneidx* : laneidx*}(ishape : ishape, laneidx*{laneidx : laneidx} : laneidx*) -- if ((ishape = `%X%`_ishape(I8_Jnn, `%`_dim(16))) /\ (|laneidx*{laneidx : laneidx}| = 16)) - | VSPLAT{shape : shape}(shape : shape) - | VEXTRACT_LANE{shape : shape, sx? : sx?, laneidx : laneidx, numtype : numtype}(shape : shape, sx?{sx : sx} : sx?, laneidx : laneidx) - -- if (($lanetype(shape) = (numtype : numtype <: lanetype)) <=> (sx?{sx : sx} = ?())) - | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) | VEXTUNOP{ishape_1 : ishape, ishape_2 : ishape, vextunop_ : vextunop_(ishape_1), sx : sx}(ishape_1 : ishape, ishape_2 : ishape, vextunop_ : vextunop_(ishape_1), sx : sx) -- if ($lsize($lanetype((ishape_1 : ishape <: shape))) = (2 * $lsize($lanetype((ishape_2 : ishape <: shape))))) | VEXTBINOP{ishape_1 : ishape, ishape_2 : ishape, vextbinop_ : vextbinop_(ishape_1), sx : sx}(ishape_1 : ishape, ishape_2 : ishape, vextbinop_ : vextbinop_(ishape_1), sx : sx) @@ -12279,6 +12270,10 @@ syntax instr = -- if (($lsize($lanetype((ishape_2 : ishape <: shape))) = (2 * $lsize($lanetype((ishape_1 : ishape <: shape))))) /\ ((2 * $lsize($lanetype((ishape_1 : ishape <: shape)))) <= 32)) | VCVTOP{shape_1 : shape, shape_2 : shape, vcvtop_ : vcvtop_(shape_2, shape_1), half_? : half_(shape_2, shape_1)?, sx? : sx?, zero_? : zero_(shape_2, shape_1)?}(shape_1 : shape, shape_2 : shape, vcvtop_ : vcvtop_(shape_2, shape_1), half_?{half_ : half_(shape_2, shape_1)} : half_(shape_2, shape_1)?, sx?{sx : sx} : sx?, zero_?{zero_ : zero_(shape_2, shape_1)} : zero_(shape_2, shape_1)?) -- if ($lanetype(shape_1) =/= $lanetype(shape_2)) + | VSPLAT{shape : shape}(shape : shape) + | VEXTRACT_LANE{shape : shape, sx? : sx?, laneidx : laneidx, numtype : numtype}(shape : shape, sx?{sx : sx} : sx?, laneidx : laneidx) + -- if (($lanetype(shape) = (numtype : numtype <: lanetype)) <=> (sx?{sx : sx} = ?())) + | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) | REF.NULL{heaptype : heaptype}(heaptype : heaptype) | REF.IS_NULL | REF.AS_NON_NULL @@ -12319,14 +12314,14 @@ syntax instr = | TABLE.COPY{tableidx : tableidx}(tableidx : tableidx, tableidx) | TABLE.INIT{tableidx : tableidx, elemidx : elemidx}(tableidx : tableidx, elemidx : elemidx) | ELEM.DROP{elemidx : elemidx}(elemidx : elemidx) - | `LOAD%(_)%?%%`{numtype : numtype, sz? : sz?, sx? : sx?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, (sz, sx)?{sx : sx, sz : sz} : (sz, sx)?, memidx : memidx, memarg : memarg) - -- (if ((numtype = (Inn : Inn <: numtype)) /\ (sz!`%`_sz.0 < $size((Inn : Inn <: numtype)))))?{Inn : Inn, sz : sz} - | STORE{numtype : numtype, sz? : sz?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, sz?{sz : sz} : sz?, memidx : memidx, memarg : memarg) - -- (if ((numtype = (Inn : Inn <: numtype)) /\ (sz!`%`_sz.0 < $size((Inn : Inn <: numtype)))))?{Inn : Inn, sz : sz} + | `LOAD%(_)%?%%`{numtype : numtype, N? : N?, sx? : sx?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, (N, sx)?{N : N, sx : sx} : (N, sx)?, memidx : memidx, memarg : memarg) + -- (if ((numtype = (Inn : Inn <: numtype)) /\ (N < $size((Inn : Inn <: numtype)))))?{Inn : Inn, N : nat} + | STORE{numtype : numtype, N? : N?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, N?{N : N} : N?, memidx : memidx, memarg : memarg) + -- (if ((numtype = (Inn : Inn <: numtype)) /\ (N < $size((Inn : Inn <: numtype)))))?{Inn : Inn, N : nat} | VLOAD{vectype : vectype, vloadop? : vloadop?, memidx : memidx, memarg : memarg}(vectype : vectype, vloadop?{vloadop : vloadop} : vloadop?, memidx : memidx, memarg : memarg) - | VLOAD_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VLOAD_LANE{vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx) | VSTORE{vectype : vectype, memidx : memidx, memarg : memarg}(vectype : vectype, memidx : memidx, memarg : memarg) - | VSTORE_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE_LANE{vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx) | MEMORY.SIZE{memidx : memidx}(memidx : memidx) | MEMORY.GROW{memidx : memidx}(memidx : memidx) | MEMORY.FILL{memidx : memidx}(memidx : memidx) @@ -12335,6 +12330,11 @@ syntax instr = | DATA.DROP{dataidx : dataidx}(dataidx : dataidx) } +;; 1-syntax.watsup +syntax sz = + | `%`{i : nat}(i : nat) + -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) + ;; 1-syntax.watsup syntax expr = instr* @@ -13749,7 +13749,7 @@ syntax admininstr = | RELOP{numtype : numtype, relop_ : relop_(numtype)}(numtype : numtype, relop_ : relop_(numtype)) | CVTOP{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop, sx? : sx?}(numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop, sx?{sx : sx} : sx?) -- if (numtype_1 =/= numtype_2) - | EXTEND{numtype : numtype, n : n}(numtype : numtype, n : n) + | EXTEND{numtype : numtype, N : N}(numtype : numtype, N : N) | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) | VVUNOP{vectype : vectype, vvunop : vvunop}(vectype : vectype, vvunop : vvunop) | VVBINOP{vectype : vectype, vvbinop : vvbinop}(vectype : vectype, vvbinop : vvbinop) @@ -13765,10 +13765,6 @@ syntax admininstr = -- if (ishape = `%X%`_ishape(I8_Jnn, `%`_dim(16))) | VSHUFFLE{ishape : ishape, laneidx* : laneidx*}(ishape : ishape, laneidx*{laneidx : laneidx} : laneidx*) -- if ((ishape = `%X%`_ishape(I8_Jnn, `%`_dim(16))) /\ (|laneidx*{laneidx : laneidx}| = 16)) - | VSPLAT{shape : shape}(shape : shape) - | VEXTRACT_LANE{shape : shape, sx? : sx?, laneidx : laneidx, numtype : numtype}(shape : shape, sx?{sx : sx} : sx?, laneidx : laneidx) - -- if (($lanetype(shape) = (numtype : numtype <: lanetype)) <=> (sx?{sx : sx} = ?())) - | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) | VEXTUNOP{ishape_1 : ishape, ishape_2 : ishape, vextunop_ : vextunop_(ishape_1), sx : sx}(ishape_1 : ishape, ishape_2 : ishape, vextunop_ : vextunop_(ishape_1), sx : sx) -- if ($lsize($lanetype((ishape_1 : ishape <: shape))) = (2 * $lsize($lanetype((ishape_2 : ishape <: shape))))) | VEXTBINOP{ishape_1 : ishape, ishape_2 : ishape, vextbinop_ : vextbinop_(ishape_1), sx : sx}(ishape_1 : ishape, ishape_2 : ishape, vextbinop_ : vextbinop_(ishape_1), sx : sx) @@ -13777,6 +13773,10 @@ syntax admininstr = -- if (($lsize($lanetype((ishape_2 : ishape <: shape))) = (2 * $lsize($lanetype((ishape_1 : ishape <: shape))))) /\ ((2 * $lsize($lanetype((ishape_1 : ishape <: shape)))) <= 32)) | VCVTOP{shape_1 : shape, shape_2 : shape, vcvtop_ : vcvtop_(shape_2, shape_1), half_? : half_(shape_2, shape_1)?, sx? : sx?, zero_? : zero_(shape_2, shape_1)?}(shape_1 : shape, shape_2 : shape, vcvtop_ : vcvtop_(shape_2, shape_1), half_?{half_ : half_(shape_2, shape_1)} : half_(shape_2, shape_1)?, sx?{sx : sx} : sx?, zero_?{zero_ : zero_(shape_2, shape_1)} : zero_(shape_2, shape_1)?) -- if ($lanetype(shape_1) =/= $lanetype(shape_2)) + | VSPLAT{shape : shape}(shape : shape) + | VEXTRACT_LANE{shape : shape, sx? : sx?, laneidx : laneidx, numtype : numtype}(shape : shape, sx?{sx : sx} : sx?, laneidx : laneidx) + -- if (($lanetype(shape) = (numtype : numtype <: lanetype)) <=> (sx?{sx : sx} = ?())) + | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) | REF.NULL{heaptype : heaptype}(heaptype : heaptype) | REF.IS_NULL | REF.AS_NON_NULL @@ -13817,14 +13817,14 @@ syntax admininstr = | TABLE.COPY{tableidx : tableidx}(tableidx : tableidx, tableidx) | TABLE.INIT{tableidx : tableidx, elemidx : elemidx}(tableidx : tableidx, elemidx : elemidx) | ELEM.DROP{elemidx : elemidx}(elemidx : elemidx) - | `LOAD%(_)%?%%`{numtype : numtype, sz? : sz?, sx? : sx?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, (sz, sx)?{sx : sx, sz : sz} : (sz, sx)?, memidx : memidx, memarg : memarg) - -- (if ((numtype = (Inn : Inn <: numtype)) /\ (sz!`%`_sz.0 < $size((Inn : Inn <: numtype)))))?{Inn : Inn, sz : sz} - | STORE{numtype : numtype, sz? : sz?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, sz?{sz : sz} : sz?, memidx : memidx, memarg : memarg) - -- (if ((numtype = (Inn : Inn <: numtype)) /\ (sz!`%`_sz.0 < $size((Inn : Inn <: numtype)))))?{Inn : Inn, sz : sz} + | `LOAD%(_)%?%%`{numtype : numtype, N? : N?, sx? : sx?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, (N, sx)?{N : N, sx : sx} : (N, sx)?, memidx : memidx, memarg : memarg) + -- (if ((numtype = (Inn : Inn <: numtype)) /\ (N < $size((Inn : Inn <: numtype)))))?{Inn : Inn, N : nat} + | STORE{numtype : numtype, N? : N?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, N?{N : N} : N?, memidx : memidx, memarg : memarg) + -- (if ((numtype = (Inn : Inn <: numtype)) /\ (N < $size((Inn : Inn <: numtype)))))?{Inn : Inn, N : nat} | VLOAD{vectype : vectype, vloadop? : vloadop?, memidx : memidx, memarg : memarg}(vectype : vectype, vloadop?{vloadop : vloadop} : vloadop?, memidx : memidx, memarg : memarg) - | VLOAD_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VLOAD_LANE{vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx) | VSTORE{vectype : vectype, memidx : memidx, memarg : memarg}(vectype : vectype, memidx : memidx, memarg : memarg) - | VSTORE_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE_LANE{vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx) | MEMORY.SIZE{memidx : memidx}(memidx : memidx) | MEMORY.GROW{memidx : memidx}(memidx : memidx) | MEMORY.FILL{memidx : memidx}(memidx : memidx) @@ -15071,25 +15071,25 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - ;; 6-typing.watsup:880.1-881.40 - rule vunop{C : context, sh : shape, vunop_sh : vunop_(sh)}: - `%|-%:%`(C, VUNOP_instr(sh, vunop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + ;; 6-typing.watsup:880.1-881.37 + rule vunop{C : context, sh : shape, vunop : vunop_(sh)}: + `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; 6-typing.watsup:883.1-884.47 - rule vbinop{C : context, sh : shape, vbinop_sh : vbinop_(sh)}: - `%|-%:%`(C, VBINOP_instr(sh, vbinop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + ;; 6-typing.watsup:883.1-884.44 + rule vbinop{C : context, sh : shape, vbinop : vbinop_(sh)}: + `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; 6-typing.watsup:886.1-887.43 - rule vtestop{C : context, sh : shape, vtestop_sh : vtestop_(sh)}: - `%|-%:%`(C, VTESTOP_instr(sh, vtestop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + ;; 6-typing.watsup:886.1-887.40 + rule vtestop{C : context, sh : shape, vtestop : vtestop_(sh)}: + `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - ;; 6-typing.watsup:889.1-890.47 - rule vrelop{C : context, sh : shape, vrelop_sh : vrelop_(sh)}: - `%|-%:%`(C, VRELOP_instr(sh, vrelop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + ;; 6-typing.watsup:889.1-890.44 + rule vrelop{C : context, sh : shape, vrelop : vrelop_(sh)}: + `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; 6-typing.watsup:892.1-893.50 - rule vshiftop{C : context, sh : ishape, vshiftop_sh : vshiftop_(sh)}: - `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + ;; 6-typing.watsup:892.1-893.47 + rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_(sh)}: + `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; 6-typing.watsup:895.1-896.33 rule vbitmask{C : context, sh : ishape}: @@ -15238,7 +15238,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; 6-typing.watsup:1025.1-1030.29 rule load{C : context, nt : numtype, n? : n?, sx? : sx?, x : idx, memarg : memarg, mt : memtype, Inn : Inn}: - `%|-%:%`(C, `LOAD%(_)%?%%`_instr(nt, (`%`_sz(n), sx)?{n : nat, sx : sx}, x, memarg), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(C, `LOAD%(_)%?%%`_instr(nt, (n, sx)?{n : N, sx : sx}, x, memarg), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([(nt : numtype <: valtype)]))) -- if (C.MEMS_context[x!`%`_idx.0] = mt) -- if ((2 ^ memarg.ALIGN_memarg!`%`_u32.0) <= ($size(nt) / 8)) -- (if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) <= (n / 8)) /\ ((n / 8) < ($size(nt) / 8))))?{n : nat} @@ -15246,7 +15246,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; 6-typing.watsup:1032.1-1037.29 rule store{C : context, nt : numtype, n? : n?, x : idx, memarg : memarg, mt : memtype, Inn : Inn}: - `%|-%:%`(C, STORE_instr(nt, `%`_sz(n)?{n : nat}, x, memarg), `%->_%%`_instrtype(`%`_resulttype([I32_valtype (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + `%|-%:%`(C, STORE_instr(nt, n?{n : N}, x, memarg), `%->_%%`_instrtype(`%`_resulttype([I32_valtype (nt : numtype <: valtype)]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x!`%`_idx.0] = mt) -- if ((2 ^ memarg.ALIGN_memarg!`%`_u32.0) <= ($size(nt) / 8)) -- (if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) <= (n / 8)) /\ ((n / 8) < ($size(nt) / 8))))?{n : nat} @@ -15272,7 +15272,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; 6-typing.watsup:1054.1-1058.29 rule vload_lane{C : context, n : n, x : idx, memarg : memarg, laneidx : laneidx, mt : memtype}: - `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(n), x, memarg, laneidx), `%->_%%`_instrtype(`%`_resulttype([I32_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, n, x, memarg, laneidx), `%->_%%`_instrtype(`%`_resulttype([I32_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- if (C.MEMS_context[x!`%`_idx.0] = mt) -- if ((2 ^ memarg.ALIGN_memarg!`%`_u32.0) < (n / 8)) -- if (laneidx!`%`_laneidx.0 < (128 / n)) @@ -15285,7 +15285,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; 6-typing.watsup:1065.1-1069.29 rule vstore_lane{C : context, n : n, x : idx, memarg : memarg, laneidx : laneidx, mt : memtype}: - `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(n), x, memarg, laneidx), `%->_%%`_instrtype(`%`_resulttype([I32_valtype V128_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, n, x, memarg, laneidx), `%->_%%`_instrtype(`%`_resulttype([I32_valtype V128_valtype]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x!`%`_idx.0] = mt) -- if ((2 ^ memarg.ALIGN_memarg!`%`_u32.0) < (n / 8)) -- if (laneidx!`%`_laneidx.0 < (128 / n)) @@ -16380,12 +16380,12 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule load-pack-oob{z : state, i : nat, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) `LOAD%(_)%?%%`_admininstr((Inn : Inn <: numtype), ?((`%`_sz(n), sx)), x, ao)]), [TRAP_admininstr]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) `LOAD%(_)%?%%`_admininstr((Inn : Inn <: numtype), ?((n, sx)), x, ao)]), [TRAP_admininstr]) -- if (((i + ao.OFFSET_memarg!`%`_u32.0) + (n / 8)) > |$mem(z, x).BYTES_meminst|) ;; 8-reduction.watsup rule load-pack-val{z : state, i : nat, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN(n)}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) `LOAD%(_)%?%%`_admininstr((Inn : Inn <: numtype), ?((`%`_sz(n), sx)), x, ao)]), [CONST_admininstr((Inn : Inn <: numtype), $ext(n, $size((Inn : Inn <: numtype)), sx, c))]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) `LOAD%(_)%?%%`_admininstr((Inn : Inn <: numtype), ?((n, sx)), x, ao)]), [CONST_admininstr((Inn : Inn <: numtype), $ext(n, $size((Inn : Inn <: numtype)), sx, c))]) -- if ($ibytes(n, c) = $mem(z, x).BYTES_meminst[(i + ao.OFFSET_memarg!`%`_u32.0) : (n / 8)]) ;; 8-reduction.watsup @@ -16436,12 +16436,12 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule vload_lane-oob{z : state, i : nat, c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : nat}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c_1) VLOAD_LANE_admininstr(V128_vectype, `%`_sz(N), x, ao, `%`_laneidx(j))]), [TRAP_admininstr]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c_1) VLOAD_LANE_admininstr(V128_vectype, N, x, ao, `%`_laneidx(j))]), [TRAP_admininstr]) -- if (((i + ao.OFFSET_memarg!`%`_u32.0) + (N / 8)) > |$mem(z, x).BYTES_meminst|) ;; 8-reduction.watsup rule vload_lane-val{z : state, i : nat, c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : nat, c : vec_(V128_Vnn), k : nat, Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c_1) VLOAD_LANE_admininstr(V128_vectype, `%`_sz(N), x, ao, `%`_laneidx(j))]), [VCONST_admininstr(V128_vectype, c)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c_1) VLOAD_LANE_admininstr(V128_vectype, N, x, ao, `%`_laneidx(j))]), [VCONST_admininstr(V128_vectype, c)]) -- if ($ibytes(N, `%`_iN(k)) = $mem(z, x).BYTES_meminst[(i + ao.OFFSET_memarg!`%`_u32.0) : (N / 8)]) -- if (N = $lsize((Jnn : Jnn <: lanetype))) -- if (M = ($vsize(V128_vectype) / N)) @@ -16465,7 +16465,7 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule memory.fill-succ{z : state, i : nat, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) (val : val <: admininstr) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.FILL_admininstr(x)]), [CONST_admininstr(I32_numtype, `%`_num_(i)) (val : val <: admininstr) STORE_admininstr(I32_numtype, ?(`%`_sz(8)), x, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((i + 1))) (val : val <: admininstr) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.FILL_admininstr(x)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) (val : val <: admininstr) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.FILL_admininstr(x)]), [CONST_admininstr(I32_numtype, `%`_num_(i)) (val : val <: admininstr) STORE_admininstr(I32_numtype, ?(8), x, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((i + 1))) (val : val <: admininstr) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.FILL_admininstr(x)]) -- otherwise ;; 8-reduction.watsup @@ -16481,13 +16481,13 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule memory.copy-le{z : state, i_1 : nat, i_2 : nat, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.COPY_admininstr(x_1, x_2)]), [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) `LOAD%(_)%?%%`_admininstr(I32_numtype, ?((`%`_sz(8), U_sx)), x_2, $memarg0) STORE_admininstr(I32_numtype, ?(`%`_sz(8)), x_1, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((i_1 + 1))) CONST_admininstr(I32_numtype, `%`_num_((i_2 + 1))) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.COPY_admininstr(x_1, x_2)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.COPY_admininstr(x_1, x_2)]), [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) `LOAD%(_)%?%%`_admininstr(I32_numtype, ?((8, U_sx)), x_2, $memarg0) STORE_admininstr(I32_numtype, ?(8), x_1, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((i_1 + 1))) CONST_admininstr(I32_numtype, `%`_num_((i_2 + 1))) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.COPY_admininstr(x_1, x_2)]) -- otherwise -- if (i_1 <= i_2) ;; 8-reduction.watsup rule memory.copy-gt{z : state, i_1 : nat, i_2 : nat, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.COPY_admininstr(x_1, x_2)]), [CONST_admininstr(I32_numtype, `%`_num_(((i_1 + n) - 1))) CONST_admininstr(I32_numtype, `%`_num_(((i_2 + n) - 1))) `LOAD%(_)%?%%`_admininstr(I32_numtype, ?((`%`_sz(8), U_sx)), x_2, $memarg0) STORE_admininstr(I32_numtype, ?(`%`_sz(8)), x_1, $memarg0) CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.COPY_admininstr(x_1, x_2)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.COPY_admininstr(x_1, x_2)]), [CONST_admininstr(I32_numtype, `%`_num_(((i_1 + n) - 1))) CONST_admininstr(I32_numtype, `%`_num_(((i_2 + n) - 1))) `LOAD%(_)%?%%`_admininstr(I32_numtype, ?((8, U_sx)), x_2, $memarg0) STORE_admininstr(I32_numtype, ?(8), x_1, $memarg0) CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.COPY_admininstr(x_1, x_2)]) -- otherwise ;; 8-reduction.watsup @@ -16503,7 +16503,7 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule memory.init-succ{z : state, j : nat, i : nat, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(j)) CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.INIT_admininstr(x, y)]), [CONST_admininstr(I32_numtype, `%`_num_(j)) CONST_admininstr(I32_numtype, `%`_num_($data(z, y).BYTES_datainst[i]!`%`_byte.0)) STORE_admininstr(I32_numtype, ?(`%`_sz(8)), x, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((j + 1))) CONST_admininstr(I32_numtype, `%`_num_((i + 1))) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.INIT_admininstr(x, y)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(j)) CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.INIT_admininstr(x, y)]), [CONST_admininstr(I32_numtype, `%`_num_(j)) CONST_admininstr(I32_numtype, `%`_num_($data(z, y).BYTES_datainst[i]!`%`_byte.0)) STORE_admininstr(I32_numtype, ?(8), x, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((j + 1))) CONST_admininstr(I32_numtype, `%`_num_((i + 1))) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.INIT_admininstr(x, y)]) -- otherwise ;; 8-reduction.watsup @@ -16597,12 +16597,12 @@ relation Step: `%~>%`(config, config) ;; 8-reduction.watsup rule store-pack-oob{z : state, i : nat, Inn : Inn, c : num_((Inn : Inn <: numtype)), nt : numtype, n : n, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr((Inn : Inn <: numtype), c) STORE_admininstr(nt, ?(`%`_sz(n)), x, ao)]), `%;%`_config(z, [TRAP_admininstr])) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr((Inn : Inn <: numtype), c) STORE_admininstr(nt, ?(n), x, ao)]), `%;%`_config(z, [TRAP_admininstr])) -- if (((i + ao.OFFSET_memarg!`%`_u32.0) + (n / 8)) > |$mem(z, x).BYTES_meminst|) ;; 8-reduction.watsup rule store-pack-val{z : state, i : nat, Inn : Inn, c : num_((Inn : Inn <: numtype)), nt : numtype, n : n, x : idx, ao : memarg, b* : byte*}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr((Inn : Inn <: numtype), c) STORE_admininstr(nt, ?(`%`_sz(n)), x, ao)]), `%;%`_config($with_mem(z, x, (i + ao.OFFSET_memarg!`%`_u32.0), (n / 8), b*{b : byte}), [])) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr((Inn : Inn <: numtype), c) STORE_admininstr(nt, ?(n), x, ao)]), `%;%`_config($with_mem(z, x, (i + ao.OFFSET_memarg!`%`_u32.0), (n / 8), b*{b : byte}), [])) -- if (b*{b : byte} = $ibytes(n, $wrap($size((Inn : Inn <: numtype)), n, c))) ;; 8-reduction.watsup @@ -16617,12 +16617,12 @@ relation Step: `%~>%`(config, config) ;; 8-reduction.watsup rule vstore_lane-oob{z : state, i : nat, c : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : nat}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c) VSTORE_LANE_admininstr(V128_vectype, `%`_sz(N), x, ao, `%`_laneidx(j))]), `%;%`_config(z, [TRAP_admininstr])) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c) VSTORE_LANE_admininstr(V128_vectype, N, x, ao, `%`_laneidx(j))]), `%;%`_config(z, [TRAP_admininstr])) -- if (((i + ao.OFFSET_memarg!`%`_u32.0) + N) > |$mem(z, x).BYTES_meminst|) ;; 8-reduction.watsup rule vstore_lane-val{z : state, i : nat, c : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : nat, b* : byte*, Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c) VSTORE_LANE_admininstr(V128_vectype, `%`_sz(N), x, ao, `%`_laneidx(j))]), `%;%`_config($with_mem(z, x, (i + ao.OFFSET_memarg!`%`_u32.0), (N / 8), b*{b : byte}), [])) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c) VSTORE_LANE_admininstr(V128_vectype, N, x, ao, `%`_laneidx(j))]), `%;%`_config($with_mem(z, x, (i + ao.OFFSET_memarg!`%`_u32.0), (N / 8), b*{b : byte}), [])) -- if (N = $lsize((Jnn : Jnn <: lanetype))) -- if (M = (128 / N)) -- if (b*{b : byte} = $ibytes(N, `%`_iN($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j]!`%`_lane_.0))) @@ -17697,15 +17697,15 @@ syntax vvtestop = ;; 1-syntax.watsup syntax vunop_(shape : shape) ;; 1-syntax.watsup - syntax vunop_{Jnn : Jnn, N : N}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(N))) = + syntax vunop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | ABS | NEG | POPCNT{Jnn : Jnn} - -- if (Jnn = I8_Jnn) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 8) ;; 1-syntax.watsup - syntax vunop_{Fnn : Fnn, N : N}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(N))) = + syntax vunop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = | ABS | NEG | SQRT @@ -17718,7 +17718,7 @@ syntax vunop_(shape : shape) ;; 1-syntax.watsup syntax vbinop_(shape : shape) ;; 1-syntax.watsup - syntax vbinop_{Jnn : Jnn, N : N}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(N))) = + syntax vbinop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | ADD | SUB | ADD_SAT{sx : sx}(sx : sx) @@ -17738,7 +17738,7 @@ syntax vbinop_(shape : shape) ;; 1-syntax.watsup - syntax vbinop_{Fnn : Fnn, N : N}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(N))) = + syntax vbinop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = | ADD | SUB | MUL @@ -17750,13 +17750,13 @@ syntax vbinop_(shape : shape) ;; 1-syntax.watsup -syntax vtestop_{Jnn : Jnn, N : N}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(N))) = +syntax vtestop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | ALL_TRUE ;; 1-syntax.watsup syntax vrelop_(shape : shape) ;; 1-syntax.watsup - syntax vrelop_{Jnn : Jnn, N : N}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(N))) = + syntax vrelop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | EQ | NE | LT{sx : sx}(sx : sx) @@ -17770,7 +17770,7 @@ syntax vrelop_(shape : shape) ;; 1-syntax.watsup - syntax vrelop_{Fnn : Fnn, N : N}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(N))) = + syntax vrelop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = | EQ | NE | LT @@ -17782,25 +17782,25 @@ syntax vrelop_(shape : shape) ;; 1-syntax.watsup syntax vcvtop_(shape_1 : shape, shape_2 : shape) ;; 1-syntax.watsup - syntax vcvtop_{Jnn_1 : Jnn, N_1 : N, Jnn_2 : Jnn, N_2 : N}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(N_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(N_2))) = + syntax vcvtop_{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) = | EXTEND{Jnn_2 : Jnn, Jnn_1 : Jnn} -- if ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) ;; 1-syntax.watsup - syntax vcvtop_{Jnn_1 : Jnn, N_1 : N, Fnn_2 : Fnn, N_2 : N}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(N_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(N_2))) = + syntax vcvtop_{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) = | CONVERT -- if (($sizenn2((Fnn_2 : Fnn <: numtype)) >= $lsizenn1((Jnn_1 : Jnn <: lanetype))) /\ ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32)) ;; 1-syntax.watsup - syntax vcvtop_{Fnn_1 : Fnn, N_1 : N, Jnn_2 : Jnn, N_2 : N}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(N_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(N_2))) = + syntax vcvtop_{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) = | TRUNC_SAT -- if (($sizenn1((Fnn_1 : Fnn <: numtype)) >= $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) ;; 1-syntax.watsup - syntax vcvtop_{Fnn_1 : Fnn, N_1 : N, Fnn_2 : Fnn, N_2 : N}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(N_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(N_2))) = + syntax vcvtop_{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) = | DEMOTE -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) > $sizenn2((Fnn_2 : Fnn <: numtype))) | PROMOTE @@ -17823,17 +17823,17 @@ syntax zero_{shape_1 : shape, shape_2 : shape}(shape_1, shape_2) = -- if (($lanetype(shape_1) = F64_lanetype) /\ ($lsize($lanetype(shape_2)) = 32)) ;; 1-syntax.watsup -syntax vshiftop_{Jnn : Jnn, N : N}(`%X%`_ishape(Jnn, `%`_dim(N))) = +syntax vshiftop_{Jnn : Jnn, M : M}(`%X%`_ishape(Jnn, `%`_dim(M))) = | SHL | SHR{sx : sx}(sx : sx) ;; 1-syntax.watsup -syntax vextunop_{Jnn : Jnn, N : N}(`%X%`_ishape(Jnn, `%`_dim(N))) = +syntax vextunop_{Jnn : Jnn, M : M}(`%X%`_ishape(Jnn, `%`_dim(M))) = | EXTADD_PAIRWISE -- if ((16 <= $lsizenn((Jnn : Jnn <: lanetype))) /\ ($lsizenn((Jnn : Jnn <: lanetype)) <= 32)) ;; 1-syntax.watsup -syntax vextbinop_{Jnn : Jnn, N : N}(`%X%`_ishape(Jnn, `%`_dim(N))) = +syntax vextbinop_{Jnn : Jnn, M : M}(`%X%`_ishape(Jnn, `%`_dim(M))) = | EXTMUL{half : half}(half : half) | DOT{Jnn : Jnn} -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 32) @@ -17856,11 +17856,6 @@ syntax blocktype = | _RESULT{valtype? : valtype?}(valtype?{valtype : valtype} : valtype?) | _IDX{funcidx : funcidx}(funcidx : funcidx) -;; 1-syntax.watsup -syntax sz = - | `%`{i : nat}(i : nat) - -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) - ;; 1-syntax.watsup rec { @@ -17894,7 +17889,7 @@ syntax instr = | RELOP{numtype : numtype, relop_ : relop_(numtype)}(numtype : numtype, relop_ : relop_(numtype)) | CVTOP{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop, sx? : sx?}(numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop, sx?{sx : sx} : sx?) -- if (numtype_1 =/= numtype_2) - | EXTEND{numtype : numtype, n : n}(numtype : numtype, n : n) + | EXTEND{numtype : numtype, N : N}(numtype : numtype, N : N) | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) | VVUNOP{vectype : vectype, vvunop : vvunop}(vectype : vectype, vvunop : vvunop) | VVBINOP{vectype : vectype, vvbinop : vvbinop}(vectype : vectype, vvbinop : vvbinop) @@ -17910,10 +17905,6 @@ syntax instr = -- if (ishape = `%X%`_ishape(I8_Jnn, `%`_dim(16))) | VSHUFFLE{ishape : ishape, laneidx* : laneidx*}(ishape : ishape, laneidx*{laneidx : laneidx} : laneidx*) -- if ((ishape = `%X%`_ishape(I8_Jnn, `%`_dim(16))) /\ (|laneidx*{laneidx : laneidx}| = 16)) - | VSPLAT{shape : shape}(shape : shape) - | VEXTRACT_LANE{shape : shape, sx? : sx?, laneidx : laneidx, numtype : numtype}(shape : shape, sx?{sx : sx} : sx?, laneidx : laneidx) - -- if (($lanetype(shape) = (numtype : numtype <: lanetype)) <=> (sx?{sx : sx} = ?())) - | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) | VEXTUNOP{ishape_1 : ishape, ishape_2 : ishape, vextunop_ : vextunop_(ishape_1), sx : sx}(ishape_1 : ishape, ishape_2 : ishape, vextunop_ : vextunop_(ishape_1), sx : sx) -- if ($lsize($lanetype((ishape_1 : ishape <: shape))) = (2 * $lsize($lanetype((ishape_2 : ishape <: shape))))) | VEXTBINOP{ishape_1 : ishape, ishape_2 : ishape, vextbinop_ : vextbinop_(ishape_1), sx : sx}(ishape_1 : ishape, ishape_2 : ishape, vextbinop_ : vextbinop_(ishape_1), sx : sx) @@ -17922,6 +17913,10 @@ syntax instr = -- if (($lsize($lanetype((ishape_2 : ishape <: shape))) = (2 * $lsize($lanetype((ishape_1 : ishape <: shape))))) /\ ((2 * $lsize($lanetype((ishape_1 : ishape <: shape)))) <= 32)) | VCVTOP{shape_1 : shape, shape_2 : shape, vcvtop_ : vcvtop_(shape_2, shape_1), half_? : half_(shape_2, shape_1)?, sx? : sx?, zero_? : zero_(shape_2, shape_1)?}(shape_1 : shape, shape_2 : shape, vcvtop_ : vcvtop_(shape_2, shape_1), half_?{half_ : half_(shape_2, shape_1)} : half_(shape_2, shape_1)?, sx?{sx : sx} : sx?, zero_?{zero_ : zero_(shape_2, shape_1)} : zero_(shape_2, shape_1)?) -- if ($lanetype(shape_1) =/= $lanetype(shape_2)) + | VSPLAT{shape : shape}(shape : shape) + | VEXTRACT_LANE{shape : shape, sx? : sx?, laneidx : laneidx, numtype : numtype}(shape : shape, sx?{sx : sx} : sx?, laneidx : laneidx) + -- if (($lanetype(shape) = (numtype : numtype <: lanetype)) <=> (sx?{sx : sx} = ?())) + | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) | REF.NULL{heaptype : heaptype}(heaptype : heaptype) | REF.IS_NULL | REF.AS_NON_NULL @@ -17962,14 +17957,14 @@ syntax instr = | TABLE.COPY{tableidx : tableidx}(tableidx : tableidx, tableidx) | TABLE.INIT{tableidx : tableidx, elemidx : elemidx}(tableidx : tableidx, elemidx : elemidx) | ELEM.DROP{elemidx : elemidx}(elemidx : elemidx) - | `LOAD%(_)%?%%`{numtype : numtype, sz? : sz?, sx? : sx?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, (sz, sx)?{sx : sx, sz : sz} : (sz, sx)?, memidx : memidx, memarg : memarg) - -- (if ((numtype = (Inn : Inn <: numtype)) /\ (sz!`%`_sz.0 < $size((Inn : Inn <: numtype)))))?{Inn : Inn, sz : sz} - | STORE{numtype : numtype, sz? : sz?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, sz?{sz : sz} : sz?, memidx : memidx, memarg : memarg) - -- (if ((numtype = (Inn : Inn <: numtype)) /\ (sz!`%`_sz.0 < $size((Inn : Inn <: numtype)))))?{Inn : Inn, sz : sz} + | `LOAD%(_)%?%%`{numtype : numtype, N? : N?, sx? : sx?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, (N, sx)?{N : N, sx : sx} : (N, sx)?, memidx : memidx, memarg : memarg) + -- (if ((numtype = (Inn : Inn <: numtype)) /\ (N < $size((Inn : Inn <: numtype)))))?{Inn : Inn, N : nat} + | STORE{numtype : numtype, N? : N?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, N?{N : N} : N?, memidx : memidx, memarg : memarg) + -- (if ((numtype = (Inn : Inn <: numtype)) /\ (N < $size((Inn : Inn <: numtype)))))?{Inn : Inn, N : nat} | VLOAD{vectype : vectype, vloadop? : vloadop?, memidx : memidx, memarg : memarg}(vectype : vectype, vloadop?{vloadop : vloadop} : vloadop?, memidx : memidx, memarg : memarg) - | VLOAD_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VLOAD_LANE{vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx) | VSTORE{vectype : vectype, memidx : memidx, memarg : memarg}(vectype : vectype, memidx : memidx, memarg : memarg) - | VSTORE_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE_LANE{vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx) | MEMORY.SIZE{memidx : memidx}(memidx : memidx) | MEMORY.GROW{memidx : memidx}(memidx : memidx) | MEMORY.FILL{memidx : memidx}(memidx : memidx) @@ -17978,6 +17973,11 @@ syntax instr = | DATA.DROP{dataidx : dataidx}(dataidx : dataidx) } +;; 1-syntax.watsup +syntax sz = + | `%`{i : nat}(i : nat) + -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) + ;; 1-syntax.watsup syntax expr = instr* @@ -19392,7 +19392,7 @@ syntax admininstr = | RELOP{numtype : numtype, relop_ : relop_(numtype)}(numtype : numtype, relop_ : relop_(numtype)) | CVTOP{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop, sx? : sx?}(numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop, sx?{sx : sx} : sx?) -- if (numtype_1 =/= numtype_2) - | EXTEND{numtype : numtype, n : n}(numtype : numtype, n : n) + | EXTEND{numtype : numtype, N : N}(numtype : numtype, N : N) | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) | VVUNOP{vectype : vectype, vvunop : vvunop}(vectype : vectype, vvunop : vvunop) | VVBINOP{vectype : vectype, vvbinop : vvbinop}(vectype : vectype, vvbinop : vvbinop) @@ -19408,10 +19408,6 @@ syntax admininstr = -- if (ishape = `%X%`_ishape(I8_Jnn, `%`_dim(16))) | VSHUFFLE{ishape : ishape, laneidx* : laneidx*}(ishape : ishape, laneidx*{laneidx : laneidx} : laneidx*) -- if ((ishape = `%X%`_ishape(I8_Jnn, `%`_dim(16))) /\ (|laneidx*{laneidx : laneidx}| = 16)) - | VSPLAT{shape : shape}(shape : shape) - | VEXTRACT_LANE{shape : shape, sx? : sx?, laneidx : laneidx, numtype : numtype}(shape : shape, sx?{sx : sx} : sx?, laneidx : laneidx) - -- if (($lanetype(shape) = (numtype : numtype <: lanetype)) <=> (sx?{sx : sx} = ?())) - | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) | VEXTUNOP{ishape_1 : ishape, ishape_2 : ishape, vextunop_ : vextunop_(ishape_1), sx : sx}(ishape_1 : ishape, ishape_2 : ishape, vextunop_ : vextunop_(ishape_1), sx : sx) -- if ($lsize($lanetype((ishape_1 : ishape <: shape))) = (2 * $lsize($lanetype((ishape_2 : ishape <: shape))))) | VEXTBINOP{ishape_1 : ishape, ishape_2 : ishape, vextbinop_ : vextbinop_(ishape_1), sx : sx}(ishape_1 : ishape, ishape_2 : ishape, vextbinop_ : vextbinop_(ishape_1), sx : sx) @@ -19420,6 +19416,10 @@ syntax admininstr = -- if (($lsize($lanetype((ishape_2 : ishape <: shape))) = (2 * $lsize($lanetype((ishape_1 : ishape <: shape))))) /\ ((2 * $lsize($lanetype((ishape_1 : ishape <: shape)))) <= 32)) | VCVTOP{shape_1 : shape, shape_2 : shape, vcvtop_ : vcvtop_(shape_2, shape_1), half_? : half_(shape_2, shape_1)?, sx? : sx?, zero_? : zero_(shape_2, shape_1)?}(shape_1 : shape, shape_2 : shape, vcvtop_ : vcvtop_(shape_2, shape_1), half_?{half_ : half_(shape_2, shape_1)} : half_(shape_2, shape_1)?, sx?{sx : sx} : sx?, zero_?{zero_ : zero_(shape_2, shape_1)} : zero_(shape_2, shape_1)?) -- if ($lanetype(shape_1) =/= $lanetype(shape_2)) + | VSPLAT{shape : shape}(shape : shape) + | VEXTRACT_LANE{shape : shape, sx? : sx?, laneidx : laneidx, numtype : numtype}(shape : shape, sx?{sx : sx} : sx?, laneidx : laneidx) + -- if (($lanetype(shape) = (numtype : numtype <: lanetype)) <=> (sx?{sx : sx} = ?())) + | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) | REF.NULL{heaptype : heaptype}(heaptype : heaptype) | REF.IS_NULL | REF.AS_NON_NULL @@ -19460,14 +19460,14 @@ syntax admininstr = | TABLE.COPY{tableidx : tableidx}(tableidx : tableidx, tableidx) | TABLE.INIT{tableidx : tableidx, elemidx : elemidx}(tableidx : tableidx, elemidx : elemidx) | ELEM.DROP{elemidx : elemidx}(elemidx : elemidx) - | `LOAD%(_)%?%%`{numtype : numtype, sz? : sz?, sx? : sx?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, (sz, sx)?{sx : sx, sz : sz} : (sz, sx)?, memidx : memidx, memarg : memarg) - -- (if ((numtype = (Inn : Inn <: numtype)) /\ (sz!`%`_sz.0 < $size((Inn : Inn <: numtype)))))?{Inn : Inn, sz : sz} - | STORE{numtype : numtype, sz? : sz?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, sz?{sz : sz} : sz?, memidx : memidx, memarg : memarg) - -- (if ((numtype = (Inn : Inn <: numtype)) /\ (sz!`%`_sz.0 < $size((Inn : Inn <: numtype)))))?{Inn : Inn, sz : sz} + | `LOAD%(_)%?%%`{numtype : numtype, N? : N?, sx? : sx?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, (N, sx)?{N : N, sx : sx} : (N, sx)?, memidx : memidx, memarg : memarg) + -- (if ((numtype = (Inn : Inn <: numtype)) /\ (N < $size((Inn : Inn <: numtype)))))?{Inn : Inn, N : nat} + | STORE{numtype : numtype, N? : N?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, N?{N : N} : N?, memidx : memidx, memarg : memarg) + -- (if ((numtype = (Inn : Inn <: numtype)) /\ (N < $size((Inn : Inn <: numtype)))))?{Inn : Inn, N : nat} | VLOAD{vectype : vectype, vloadop? : vloadop?, memidx : memidx, memarg : memarg}(vectype : vectype, vloadop?{vloadop : vloadop} : vloadop?, memidx : memidx, memarg : memarg) - | VLOAD_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VLOAD_LANE{vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx) | VSTORE{vectype : vectype, memidx : memidx, memarg : memarg}(vectype : vectype, memidx : memidx, memarg : memarg) - | VSTORE_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE_LANE{vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx) | MEMORY.SIZE{memidx : memidx}(memidx : memidx) | MEMORY.GROW{memidx : memidx}(memidx : memidx) | MEMORY.FILL{memidx : memidx}(memidx : memidx) @@ -20774,25 +20774,25 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - ;; 6-typing.watsup:880.1-881.40 - rule vunop{C : context, sh : shape, vunop_sh : vunop_(sh)}: - `%|-%:%`(C, VUNOP_instr(sh, vunop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + ;; 6-typing.watsup:880.1-881.37 + rule vunop{C : context, sh : shape, vunop : vunop_(sh)}: + `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; 6-typing.watsup:883.1-884.47 - rule vbinop{C : context, sh : shape, vbinop_sh : vbinop_(sh)}: - `%|-%:%`(C, VBINOP_instr(sh, vbinop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + ;; 6-typing.watsup:883.1-884.44 + rule vbinop{C : context, sh : shape, vbinop : vbinop_(sh)}: + `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; 6-typing.watsup:886.1-887.43 - rule vtestop{C : context, sh : shape, vtestop_sh : vtestop_(sh)}: - `%|-%:%`(C, VTESTOP_instr(sh, vtestop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + ;; 6-typing.watsup:886.1-887.40 + rule vtestop{C : context, sh : shape, vtestop : vtestop_(sh)}: + `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - ;; 6-typing.watsup:889.1-890.47 - rule vrelop{C : context, sh : shape, vrelop_sh : vrelop_(sh)}: - `%|-%:%`(C, VRELOP_instr(sh, vrelop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + ;; 6-typing.watsup:889.1-890.44 + rule vrelop{C : context, sh : shape, vrelop : vrelop_(sh)}: + `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; 6-typing.watsup:892.1-893.50 - rule vshiftop{C : context, sh : ishape, vshiftop_sh : vshiftop_(sh)}: - `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + ;; 6-typing.watsup:892.1-893.47 + rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_(sh)}: + `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; 6-typing.watsup:895.1-896.33 rule vbitmask{C : context, sh : ishape}: @@ -20964,7 +20964,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; 6-typing.watsup:1025.1-1030.29 rule load{C : context, nt : numtype, n? : n?, sx? : sx?, x : idx, memarg : memarg, mt : memtype, Inn : Inn}: - `%|-%:%`(C, `LOAD%(_)%?%%`_instr(nt, (`%`_sz(n), sx)?{n : nat, sx : sx}, x, memarg), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(C, `LOAD%(_)%?%%`_instr(nt, (n, sx)?{n : N, sx : sx}, x, memarg), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([(nt : numtype <: valtype)]))) -- if (x!`%`_idx.0 < |C.MEMS_context|) -- if ((n?{n : n} = ?()) <=> (sx?{sx : sx} = ?())) -- if (C.MEMS_context[x!`%`_idx.0] = mt) @@ -20974,7 +20974,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; 6-typing.watsup:1032.1-1037.29 rule store{C : context, nt : numtype, n? : n?, x : idx, memarg : memarg, mt : memtype, Inn : Inn}: - `%|-%:%`(C, STORE_instr(nt, `%`_sz(n)?{n : nat}, x, memarg), `%->_%%`_instrtype(`%`_resulttype([I32_valtype (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + `%|-%:%`(C, STORE_instr(nt, n?{n : N}, x, memarg), `%->_%%`_instrtype(`%`_resulttype([I32_valtype (nt : numtype <: valtype)]), [], `%`_resulttype([]))) -- if (x!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x!`%`_idx.0] = mt) -- if ((2 ^ memarg.ALIGN_memarg!`%`_u32.0) <= ($size(nt) / 8)) @@ -21004,7 +21004,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; 6-typing.watsup:1054.1-1058.29 rule vload_lane{C : context, n : n, x : idx, memarg : memarg, laneidx : laneidx, mt : memtype}: - `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(n), x, memarg, laneidx), `%->_%%`_instrtype(`%`_resulttype([I32_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, n, x, memarg, laneidx), `%->_%%`_instrtype(`%`_resulttype([I32_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- if (x!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x!`%`_idx.0] = mt) -- if ((2 ^ memarg.ALIGN_memarg!`%`_u32.0) < (n / 8)) @@ -21019,7 +21019,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; 6-typing.watsup:1065.1-1069.29 rule vstore_lane{C : context, n : n, x : idx, memarg : memarg, laneidx : laneidx, mt : memtype}: - `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(n), x, memarg, laneidx), `%->_%%`_instrtype(`%`_resulttype([I32_valtype V128_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, n, x, memarg, laneidx), `%->_%%`_instrtype(`%`_resulttype([I32_valtype V128_valtype]), [], `%`_resulttype([]))) -- if (x!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x!`%`_idx.0] = mt) -- if ((2 ^ memarg.ALIGN_memarg!`%`_u32.0) < (n / 8)) @@ -22169,12 +22169,12 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule load-pack-oob{z : state, i : nat, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) `LOAD%(_)%?%%`_admininstr((Inn : Inn <: numtype), ?((`%`_sz(n), sx)), x, ao)]), [TRAP_admininstr]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) `LOAD%(_)%?%%`_admininstr((Inn : Inn <: numtype), ?((n, sx)), x, ao)]), [TRAP_admininstr]) -- if (((i + ao.OFFSET_memarg!`%`_u32.0) + (n / 8)) > |$mem(z, x).BYTES_meminst|) ;; 8-reduction.watsup rule load-pack-val{z : state, i : nat, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN(n)}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) `LOAD%(_)%?%%`_admininstr((Inn : Inn <: numtype), ?((`%`_sz(n), sx)), x, ao)]), [CONST_admininstr((Inn : Inn <: numtype), $ext(n, $size((Inn : Inn <: numtype)), sx, c))]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) `LOAD%(_)%?%%`_admininstr((Inn : Inn <: numtype), ?((n, sx)), x, ao)]), [CONST_admininstr((Inn : Inn <: numtype), $ext(n, $size((Inn : Inn <: numtype)), sx, c))]) -- if ($ibytes(n, c) = $mem(z, x).BYTES_meminst[(i + ao.OFFSET_memarg!`%`_u32.0) : (n / 8)]) ;; 8-reduction.watsup @@ -22225,12 +22225,12 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule vload_lane-oob{z : state, i : nat, c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : nat}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c_1) VLOAD_LANE_admininstr(V128_vectype, `%`_sz(N), x, ao, `%`_laneidx(j))]), [TRAP_admininstr]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c_1) VLOAD_LANE_admininstr(V128_vectype, N, x, ao, `%`_laneidx(j))]), [TRAP_admininstr]) -- if (((i + ao.OFFSET_memarg!`%`_u32.0) + (N / 8)) > |$mem(z, x).BYTES_meminst|) ;; 8-reduction.watsup rule vload_lane-val{z : state, i : nat, c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : nat, c : vec_(V128_Vnn), k : nat, Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c_1) VLOAD_LANE_admininstr(V128_vectype, `%`_sz(N), x, ao, `%`_laneidx(j))]), [VCONST_admininstr(V128_vectype, c)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c_1) VLOAD_LANE_admininstr(V128_vectype, N, x, ao, `%`_laneidx(j))]), [VCONST_admininstr(V128_vectype, c)]) -- if ($ibytes(N, `%`_iN(k)) = $mem(z, x).BYTES_meminst[(i + ao.OFFSET_memarg!`%`_u32.0) : (N / 8)]) -- if (N = $lsize((Jnn : Jnn <: lanetype))) -- if (M = ($vsize(V128_vectype) / N)) @@ -22254,7 +22254,7 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule memory.fill-succ{z : state, i : nat, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) (val : val <: admininstr) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.FILL_admininstr(x)]), [CONST_admininstr(I32_numtype, `%`_num_(i)) (val : val <: admininstr) STORE_admininstr(I32_numtype, ?(`%`_sz(8)), x, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((i + 1))) (val : val <: admininstr) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.FILL_admininstr(x)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) (val : val <: admininstr) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.FILL_admininstr(x)]), [CONST_admininstr(I32_numtype, `%`_num_(i)) (val : val <: admininstr) STORE_admininstr(I32_numtype, ?(8), x, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((i + 1))) (val : val <: admininstr) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.FILL_admininstr(x)]) -- otherwise ;; 8-reduction.watsup @@ -22270,13 +22270,13 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule memory.copy-le{z : state, i_1 : nat, i_2 : nat, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.COPY_admininstr(x_1, x_2)]), [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) `LOAD%(_)%?%%`_admininstr(I32_numtype, ?((`%`_sz(8), U_sx)), x_2, $memarg0) STORE_admininstr(I32_numtype, ?(`%`_sz(8)), x_1, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((i_1 + 1))) CONST_admininstr(I32_numtype, `%`_num_((i_2 + 1))) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.COPY_admininstr(x_1, x_2)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.COPY_admininstr(x_1, x_2)]), [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) `LOAD%(_)%?%%`_admininstr(I32_numtype, ?((8, U_sx)), x_2, $memarg0) STORE_admininstr(I32_numtype, ?(8), x_1, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((i_1 + 1))) CONST_admininstr(I32_numtype, `%`_num_((i_2 + 1))) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.COPY_admininstr(x_1, x_2)]) -- otherwise -- if (i_1 <= i_2) ;; 8-reduction.watsup rule memory.copy-gt{z : state, i_1 : nat, i_2 : nat, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.COPY_admininstr(x_1, x_2)]), [CONST_admininstr(I32_numtype, `%`_num_(((i_1 + n) - 1))) CONST_admininstr(I32_numtype, `%`_num_(((i_2 + n) - 1))) `LOAD%(_)%?%%`_admininstr(I32_numtype, ?((`%`_sz(8), U_sx)), x_2, $memarg0) STORE_admininstr(I32_numtype, ?(`%`_sz(8)), x_1, $memarg0) CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.COPY_admininstr(x_1, x_2)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.COPY_admininstr(x_1, x_2)]), [CONST_admininstr(I32_numtype, `%`_num_(((i_1 + n) - 1))) CONST_admininstr(I32_numtype, `%`_num_(((i_2 + n) - 1))) `LOAD%(_)%?%%`_admininstr(I32_numtype, ?((8, U_sx)), x_2, $memarg0) STORE_admininstr(I32_numtype, ?(8), x_1, $memarg0) CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.COPY_admininstr(x_1, x_2)]) -- otherwise ;; 8-reduction.watsup @@ -22292,7 +22292,7 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule memory.init-succ{z : state, j : nat, i : nat, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(j)) CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.INIT_admininstr(x, y)]), [CONST_admininstr(I32_numtype, `%`_num_(j)) CONST_admininstr(I32_numtype, `%`_num_($data(z, y).BYTES_datainst[i]!`%`_byte.0)) STORE_admininstr(I32_numtype, ?(`%`_sz(8)), x, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((j + 1))) CONST_admininstr(I32_numtype, `%`_num_((i + 1))) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.INIT_admininstr(x, y)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(j)) CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.INIT_admininstr(x, y)]), [CONST_admininstr(I32_numtype, `%`_num_(j)) CONST_admininstr(I32_numtype, `%`_num_($data(z, y).BYTES_datainst[i]!`%`_byte.0)) STORE_admininstr(I32_numtype, ?(8), x, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((j + 1))) CONST_admininstr(I32_numtype, `%`_num_((i + 1))) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.INIT_admininstr(x, y)]) -- if (i < |$data(z, y).BYTES_datainst|) -- otherwise @@ -22391,12 +22391,12 @@ relation Step: `%~>%`(config, config) ;; 8-reduction.watsup rule store-pack-oob{z : state, i : nat, Inn : Inn, c : num_((Inn : Inn <: numtype)), nt : numtype, n : n, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr((Inn : Inn <: numtype), c) STORE_admininstr(nt, ?(`%`_sz(n)), x, ao)]), `%;%`_config(z, [TRAP_admininstr])) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr((Inn : Inn <: numtype), c) STORE_admininstr(nt, ?(n), x, ao)]), `%;%`_config(z, [TRAP_admininstr])) -- if (((i + ao.OFFSET_memarg!`%`_u32.0) + (n / 8)) > |$mem(z, x).BYTES_meminst|) ;; 8-reduction.watsup rule store-pack-val{z : state, i : nat, Inn : Inn, c : num_((Inn : Inn <: numtype)), nt : numtype, n : n, x : idx, ao : memarg, b* : byte*}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr((Inn : Inn <: numtype), c) STORE_admininstr(nt, ?(`%`_sz(n)), x, ao)]), `%;%`_config($with_mem(z, x, (i + ao.OFFSET_memarg!`%`_u32.0), (n / 8), b*{b : byte}), [])) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr((Inn : Inn <: numtype), c) STORE_admininstr(nt, ?(n), x, ao)]), `%;%`_config($with_mem(z, x, (i + ao.OFFSET_memarg!`%`_u32.0), (n / 8), b*{b : byte}), [])) -- if (b*{b : byte} = $ibytes(n, $wrap($size((Inn : Inn <: numtype)), n, c))) ;; 8-reduction.watsup @@ -22411,12 +22411,12 @@ relation Step: `%~>%`(config, config) ;; 8-reduction.watsup rule vstore_lane-oob{z : state, i : nat, c : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : nat}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c) VSTORE_LANE_admininstr(V128_vectype, `%`_sz(N), x, ao, `%`_laneidx(j))]), `%;%`_config(z, [TRAP_admininstr])) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c) VSTORE_LANE_admininstr(V128_vectype, N, x, ao, `%`_laneidx(j))]), `%;%`_config(z, [TRAP_admininstr])) -- if (((i + ao.OFFSET_memarg!`%`_u32.0) + N) > |$mem(z, x).BYTES_meminst|) ;; 8-reduction.watsup rule vstore_lane-val{z : state, i : nat, c : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : nat, b* : byte*, Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c) VSTORE_LANE_admininstr(V128_vectype, `%`_sz(N), x, ao, `%`_laneidx(j))]), `%;%`_config($with_mem(z, x, (i + ao.OFFSET_memarg!`%`_u32.0), (N / 8), b*{b : byte}), [])) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c) VSTORE_LANE_admininstr(V128_vectype, N, x, ao, `%`_laneidx(j))]), `%;%`_config($with_mem(z, x, (i + ao.OFFSET_memarg!`%`_u32.0), (N / 8), b*{b : byte}), [])) -- if (j < |$lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)|) -- if (N = $lsize((Jnn : Jnn <: lanetype))) -- if (M = (128 / N)) @@ -23499,15 +23499,15 @@ syntax vvtestop = ;; 1-syntax.watsup syntax vunop_(shape : shape) ;; 1-syntax.watsup - syntax vunop_{Jnn : Jnn, N : N}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(N))) = + syntax vunop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | ABS | NEG | POPCNT{Jnn : Jnn} - -- if (Jnn = I8_Jnn) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 8) ;; 1-syntax.watsup - syntax vunop_{Fnn : Fnn, N : N}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(N))) = + syntax vunop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = | ABS | NEG | SQRT @@ -23520,7 +23520,7 @@ syntax vunop_(shape : shape) ;; 1-syntax.watsup syntax vbinop_(shape : shape) ;; 1-syntax.watsup - syntax vbinop_{Jnn : Jnn, N : N}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(N))) = + syntax vbinop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | ADD | SUB | ADD_SAT{sx : sx}(sx : sx) @@ -23540,7 +23540,7 @@ syntax vbinop_(shape : shape) ;; 1-syntax.watsup - syntax vbinop_{Fnn : Fnn, N : N}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(N))) = + syntax vbinop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = | ADD | SUB | MUL @@ -23552,13 +23552,13 @@ syntax vbinop_(shape : shape) ;; 1-syntax.watsup -syntax vtestop_{Jnn : Jnn, N : N}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(N))) = +syntax vtestop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | ALL_TRUE ;; 1-syntax.watsup syntax vrelop_(shape : shape) ;; 1-syntax.watsup - syntax vrelop_{Jnn : Jnn, N : N}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(N))) = + syntax vrelop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | EQ | NE | LT{sx : sx}(sx : sx) @@ -23572,7 +23572,7 @@ syntax vrelop_(shape : shape) ;; 1-syntax.watsup - syntax vrelop_{Fnn : Fnn, N : N}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(N))) = + syntax vrelop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = | EQ | NE | LT @@ -23584,25 +23584,25 @@ syntax vrelop_(shape : shape) ;; 1-syntax.watsup syntax vcvtop_(shape_1 : shape, shape_2 : shape) ;; 1-syntax.watsup - syntax vcvtop_{Jnn_1 : Jnn, N_1 : N, Jnn_2 : Jnn, N_2 : N}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(N_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(N_2))) = + syntax vcvtop_{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) = | EXTEND{Jnn_2 : Jnn, Jnn_1 : Jnn} -- if ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) ;; 1-syntax.watsup - syntax vcvtop_{Jnn_1 : Jnn, N_1 : N, Fnn_2 : Fnn, N_2 : N}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(N_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(N_2))) = + syntax vcvtop_{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) = | CONVERT -- if (($sizenn2((Fnn_2 : Fnn <: numtype)) >= $lsizenn1((Jnn_1 : Jnn <: lanetype))) /\ ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32)) ;; 1-syntax.watsup - syntax vcvtop_{Fnn_1 : Fnn, N_1 : N, Jnn_2 : Jnn, N_2 : N}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(N_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(N_2))) = + syntax vcvtop_{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) = | TRUNC_SAT -- if (($sizenn1((Fnn_1 : Fnn <: numtype)) >= $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) ;; 1-syntax.watsup - syntax vcvtop_{Fnn_1 : Fnn, N_1 : N, Fnn_2 : Fnn, N_2 : N}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(N_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(N_2))) = + syntax vcvtop_{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) = | DEMOTE -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) > $sizenn2((Fnn_2 : Fnn <: numtype))) | PROMOTE @@ -23625,17 +23625,17 @@ syntax zero_{shape_1 : shape, shape_2 : shape}(shape_1, shape_2) = -- if (($lanetype(shape_1) = F64_lanetype) /\ ($lsize($lanetype(shape_2)) = 32)) ;; 1-syntax.watsup -syntax vshiftop_{Jnn : Jnn, N : N}(`%X%`_ishape(Jnn, `%`_dim(N))) = +syntax vshiftop_{Jnn : Jnn, M : M}(`%X%`_ishape(Jnn, `%`_dim(M))) = | SHL | SHR{sx : sx}(sx : sx) ;; 1-syntax.watsup -syntax vextunop_{Jnn : Jnn, N : N}(`%X%`_ishape(Jnn, `%`_dim(N))) = +syntax vextunop_{Jnn : Jnn, M : M}(`%X%`_ishape(Jnn, `%`_dim(M))) = | EXTADD_PAIRWISE -- if ((16 <= $lsizenn((Jnn : Jnn <: lanetype))) /\ ($lsizenn((Jnn : Jnn <: lanetype)) <= 32)) ;; 1-syntax.watsup -syntax vextbinop_{Jnn : Jnn, N : N}(`%X%`_ishape(Jnn, `%`_dim(N))) = +syntax vextbinop_{Jnn : Jnn, M : M}(`%X%`_ishape(Jnn, `%`_dim(M))) = | EXTMUL{half : half}(half : half) | DOT{Jnn : Jnn} -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 32) @@ -23658,11 +23658,6 @@ syntax blocktype = | _RESULT{valtype? : valtype?}(valtype?{valtype : valtype} : valtype?) | _IDX{funcidx : funcidx}(funcidx : funcidx) -;; 1-syntax.watsup -syntax sz = - | `%`{i : nat}(i : nat) - -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) - ;; 1-syntax.watsup rec { @@ -23696,7 +23691,7 @@ syntax instr = | RELOP{numtype : numtype, relop_ : relop_(numtype)}(numtype : numtype, relop_ : relop_(numtype)) | CVTOP{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop, sx? : sx?}(numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop, sx?{sx : sx} : sx?) -- if (numtype_1 =/= numtype_2) - | EXTEND{numtype : numtype, n : n}(numtype : numtype, n : n) + | EXTEND{numtype : numtype, N : N}(numtype : numtype, N : N) | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) | VVUNOP{vectype : vectype, vvunop : vvunop}(vectype : vectype, vvunop : vvunop) | VVBINOP{vectype : vectype, vvbinop : vvbinop}(vectype : vectype, vvbinop : vvbinop) @@ -23712,10 +23707,6 @@ syntax instr = -- if (ishape = `%X%`_ishape(I8_Jnn, `%`_dim(16))) | VSHUFFLE{ishape : ishape, laneidx* : laneidx*}(ishape : ishape, laneidx*{laneidx : laneidx} : laneidx*) -- if ((ishape = `%X%`_ishape(I8_Jnn, `%`_dim(16))) /\ (|laneidx*{laneidx : laneidx}| = 16)) - | VSPLAT{shape : shape}(shape : shape) - | VEXTRACT_LANE{shape : shape, sx? : sx?, laneidx : laneidx, numtype : numtype}(shape : shape, sx?{sx : sx} : sx?, laneidx : laneidx) - -- if (($lanetype(shape) = (numtype : numtype <: lanetype)) <=> (sx?{sx : sx} = ?())) - | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) | VEXTUNOP{ishape_1 : ishape, ishape_2 : ishape, vextunop_ : vextunop_(ishape_1), sx : sx}(ishape_1 : ishape, ishape_2 : ishape, vextunop_ : vextunop_(ishape_1), sx : sx) -- if ($lsize($lanetype((ishape_1 : ishape <: shape))) = (2 * $lsize($lanetype((ishape_2 : ishape <: shape))))) | VEXTBINOP{ishape_1 : ishape, ishape_2 : ishape, vextbinop_ : vextbinop_(ishape_1), sx : sx}(ishape_1 : ishape, ishape_2 : ishape, vextbinop_ : vextbinop_(ishape_1), sx : sx) @@ -23724,6 +23715,10 @@ syntax instr = -- if (($lsize($lanetype((ishape_2 : ishape <: shape))) = (2 * $lsize($lanetype((ishape_1 : ishape <: shape))))) /\ ((2 * $lsize($lanetype((ishape_1 : ishape <: shape)))) <= 32)) | VCVTOP{shape_1 : shape, shape_2 : shape, vcvtop_ : vcvtop_(shape_2, shape_1), half_? : half_(shape_2, shape_1)?, sx? : sx?, zero_? : zero_(shape_2, shape_1)?}(shape_1 : shape, shape_2 : shape, vcvtop_ : vcvtop_(shape_2, shape_1), half_?{half_ : half_(shape_2, shape_1)} : half_(shape_2, shape_1)?, sx?{sx : sx} : sx?, zero_?{zero_ : zero_(shape_2, shape_1)} : zero_(shape_2, shape_1)?) -- if ($lanetype(shape_1) =/= $lanetype(shape_2)) + | VSPLAT{shape : shape}(shape : shape) + | VEXTRACT_LANE{shape : shape, sx? : sx?, laneidx : laneidx, numtype : numtype}(shape : shape, sx?{sx : sx} : sx?, laneidx : laneidx) + -- if (($lanetype(shape) = (numtype : numtype <: lanetype)) <=> (sx?{sx : sx} = ?())) + | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) | REF.NULL{heaptype : heaptype}(heaptype : heaptype) | REF.IS_NULL | REF.AS_NON_NULL @@ -23764,14 +23759,14 @@ syntax instr = | TABLE.COPY{tableidx : tableidx}(tableidx : tableidx, tableidx) | TABLE.INIT{tableidx : tableidx, elemidx : elemidx}(tableidx : tableidx, elemidx : elemidx) | ELEM.DROP{elemidx : elemidx}(elemidx : elemidx) - | `LOAD%(_)%?%%`{numtype : numtype, sz? : sz?, sx? : sx?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, (sz, sx)?{sx : sx, sz : sz} : (sz, sx)?, memidx : memidx, memarg : memarg) - -- (if ((numtype = (Inn : Inn <: numtype)) /\ (sz!`%`_sz.0 < $size((Inn : Inn <: numtype)))))?{Inn : Inn, sz : sz} - | STORE{numtype : numtype, sz? : sz?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, sz?{sz : sz} : sz?, memidx : memidx, memarg : memarg) - -- (if ((numtype = (Inn : Inn <: numtype)) /\ (sz!`%`_sz.0 < $size((Inn : Inn <: numtype)))))?{Inn : Inn, sz : sz} + | `LOAD%(_)%?%%`{numtype : numtype, N? : N?, sx? : sx?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, (N, sx)?{N : N, sx : sx} : (N, sx)?, memidx : memidx, memarg : memarg) + -- (if ((numtype = (Inn : Inn <: numtype)) /\ (N < $size((Inn : Inn <: numtype)))))?{Inn : Inn, N : nat} + | STORE{numtype : numtype, N? : N?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, N?{N : N} : N?, memidx : memidx, memarg : memarg) + -- (if ((numtype = (Inn : Inn <: numtype)) /\ (N < $size((Inn : Inn <: numtype)))))?{Inn : Inn, N : nat} | VLOAD{vectype : vectype, vloadop? : vloadop?, memidx : memidx, memarg : memarg}(vectype : vectype, vloadop?{vloadop : vloadop} : vloadop?, memidx : memidx, memarg : memarg) - | VLOAD_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VLOAD_LANE{vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx) | VSTORE{vectype : vectype, memidx : memidx, memarg : memarg}(vectype : vectype, memidx : memidx, memarg : memarg) - | VSTORE_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE_LANE{vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx) | MEMORY.SIZE{memidx : memidx}(memidx : memidx) | MEMORY.GROW{memidx : memidx}(memidx : memidx) | MEMORY.FILL{memidx : memidx}(memidx : memidx) @@ -23780,6 +23775,11 @@ syntax instr = | DATA.DROP{dataidx : dataidx}(dataidx : dataidx) } +;; 1-syntax.watsup +syntax sz = + | `%`{i : nat}(i : nat) + -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) + ;; 1-syntax.watsup syntax expr = instr* @@ -25195,7 +25195,7 @@ syntax admininstr = | RELOP{numtype : numtype, relop_ : relop_(numtype)}(numtype : numtype, relop_ : relop_(numtype)) | CVTOP{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop, sx? : sx?}(numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop, sx?{sx : sx} : sx?) -- if (numtype_1 =/= numtype_2) - | EXTEND{numtype : numtype, n : n}(numtype : numtype, n : n) + | EXTEND{numtype : numtype, N : N}(numtype : numtype, N : N) | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) | VVUNOP{vectype : vectype, vvunop : vvunop}(vectype : vectype, vvunop : vvunop) | VVBINOP{vectype : vectype, vvbinop : vvbinop}(vectype : vectype, vvbinop : vvbinop) @@ -25211,10 +25211,6 @@ syntax admininstr = -- if (ishape = `%X%`_ishape(I8_Jnn, `%`_dim(16))) | VSHUFFLE{ishape : ishape, laneidx* : laneidx*}(ishape : ishape, laneidx*{laneidx : laneidx} : laneidx*) -- if ((ishape = `%X%`_ishape(I8_Jnn, `%`_dim(16))) /\ (|laneidx*{laneidx : laneidx}| = 16)) - | VSPLAT{shape : shape}(shape : shape) - | VEXTRACT_LANE{shape : shape, sx? : sx?, laneidx : laneidx, numtype : numtype}(shape : shape, sx?{sx : sx} : sx?, laneidx : laneidx) - -- if (($lanetype(shape) = (numtype : numtype <: lanetype)) <=> (sx?{sx : sx} = ?())) - | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) | VEXTUNOP{ishape_1 : ishape, ishape_2 : ishape, vextunop_ : vextunop_(ishape_1), sx : sx}(ishape_1 : ishape, ishape_2 : ishape, vextunop_ : vextunop_(ishape_1), sx : sx) -- if ($lsize($lanetype((ishape_1 : ishape <: shape))) = (2 * $lsize($lanetype((ishape_2 : ishape <: shape))))) | VEXTBINOP{ishape_1 : ishape, ishape_2 : ishape, vextbinop_ : vextbinop_(ishape_1), sx : sx}(ishape_1 : ishape, ishape_2 : ishape, vextbinop_ : vextbinop_(ishape_1), sx : sx) @@ -25223,6 +25219,10 @@ syntax admininstr = -- if (($lsize($lanetype((ishape_2 : ishape <: shape))) = (2 * $lsize($lanetype((ishape_1 : ishape <: shape))))) /\ ((2 * $lsize($lanetype((ishape_1 : ishape <: shape)))) <= 32)) | VCVTOP{shape_1 : shape, shape_2 : shape, vcvtop_ : vcvtop_(shape_2, shape_1), half_? : half_(shape_2, shape_1)?, sx? : sx?, zero_? : zero_(shape_2, shape_1)?}(shape_1 : shape, shape_2 : shape, vcvtop_ : vcvtop_(shape_2, shape_1), half_?{half_ : half_(shape_2, shape_1)} : half_(shape_2, shape_1)?, sx?{sx : sx} : sx?, zero_?{zero_ : zero_(shape_2, shape_1)} : zero_(shape_2, shape_1)?) -- if ($lanetype(shape_1) =/= $lanetype(shape_2)) + | VSPLAT{shape : shape}(shape : shape) + | VEXTRACT_LANE{shape : shape, sx? : sx?, laneidx : laneidx, numtype : numtype}(shape : shape, sx?{sx : sx} : sx?, laneidx : laneidx) + -- if (($lanetype(shape) = (numtype : numtype <: lanetype)) <=> (sx?{sx : sx} = ?())) + | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) | REF.NULL{heaptype : heaptype}(heaptype : heaptype) | REF.IS_NULL | REF.AS_NON_NULL @@ -25263,14 +25263,14 @@ syntax admininstr = | TABLE.COPY{tableidx : tableidx}(tableidx : tableidx, tableidx) | TABLE.INIT{tableidx : tableidx, elemidx : elemidx}(tableidx : tableidx, elemidx : elemidx) | ELEM.DROP{elemidx : elemidx}(elemidx : elemidx) - | `LOAD%(_)%?%%`{numtype : numtype, sz? : sz?, sx? : sx?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, (sz, sx)?{sx : sx, sz : sz} : (sz, sx)?, memidx : memidx, memarg : memarg) - -- (if ((numtype = (Inn : Inn <: numtype)) /\ (sz!`%`_sz.0 < $size((Inn : Inn <: numtype)))))?{Inn : Inn, sz : sz} - | STORE{numtype : numtype, sz? : sz?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, sz?{sz : sz} : sz?, memidx : memidx, memarg : memarg) - -- (if ((numtype = (Inn : Inn <: numtype)) /\ (sz!`%`_sz.0 < $size((Inn : Inn <: numtype)))))?{Inn : Inn, sz : sz} + | `LOAD%(_)%?%%`{numtype : numtype, N? : N?, sx? : sx?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, (N, sx)?{N : N, sx : sx} : (N, sx)?, memidx : memidx, memarg : memarg) + -- (if ((numtype = (Inn : Inn <: numtype)) /\ (N < $size((Inn : Inn <: numtype)))))?{Inn : Inn, N : nat} + | STORE{numtype : numtype, N? : N?, memidx : memidx, memarg : memarg, Inn? : Inn?}(numtype : numtype, N?{N : N} : N?, memidx : memidx, memarg : memarg) + -- (if ((numtype = (Inn : Inn <: numtype)) /\ (N < $size((Inn : Inn <: numtype)))))?{Inn : Inn, N : nat} | VLOAD{vectype : vectype, vloadop? : vloadop?, memidx : memidx, memarg : memarg}(vectype : vectype, vloadop?{vloadop : vloadop} : vloadop?, memidx : memidx, memarg : memarg) - | VLOAD_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VLOAD_LANE{vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx) | VSTORE{vectype : vectype, memidx : memidx, memarg : memarg}(vectype : vectype, memidx : memidx, memarg : memarg) - | VSTORE_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE_LANE{vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, N : N, memidx : memidx, memarg : memarg, laneidx : laneidx) | MEMORY.SIZE{memidx : memidx}(memidx : memidx) | MEMORY.GROW{memidx : memidx}(memidx : memidx) | MEMORY.FILL{memidx : memidx}(memidx : memidx) @@ -26603,25 +26603,25 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - ;; 6-typing.watsup:880.1-881.40 - rule vunop{C : context, sh : shape, vunop_sh : vunop_(sh)}: - `%|-%:%`(C, VUNOP_instr(sh, vunop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + ;; 6-typing.watsup:880.1-881.37 + rule vunop{C : context, sh : shape, vunop : vunop_(sh)}: + `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; 6-typing.watsup:883.1-884.47 - rule vbinop{C : context, sh : shape, vbinop_sh : vbinop_(sh)}: - `%|-%:%`(C, VBINOP_instr(sh, vbinop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + ;; 6-typing.watsup:883.1-884.44 + rule vbinop{C : context, sh : shape, vbinop : vbinop_(sh)}: + `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; 6-typing.watsup:886.1-887.43 - rule vtestop{C : context, sh : shape, vtestop_sh : vtestop_(sh)}: - `%|-%:%`(C, VTESTOP_instr(sh, vtestop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + ;; 6-typing.watsup:886.1-887.40 + rule vtestop{C : context, sh : shape, vtestop : vtestop_(sh)}: + `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - ;; 6-typing.watsup:889.1-890.47 - rule vrelop{C : context, sh : shape, vrelop_sh : vrelop_(sh)}: - `%|-%:%`(C, VRELOP_instr(sh, vrelop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + ;; 6-typing.watsup:889.1-890.44 + rule vrelop{C : context, sh : shape, vrelop : vrelop_(sh)}: + `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; 6-typing.watsup:892.1-893.50 - rule vshiftop{C : context, sh : ishape, vshiftop_sh : vshiftop_(sh)}: - `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop_sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + ;; 6-typing.watsup:892.1-893.47 + rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_(sh)}: + `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; 6-typing.watsup:895.1-896.33 rule vbitmask{C : context, sh : ishape}: @@ -26793,7 +26793,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; 6-typing.watsup:1025.1-1030.29 rule load-0{C : context, nt : numtype, n? : n?, sx? : sx?, x : idx, memarg : memarg, mt : memtype, Inn : Inn}: - `%|-%:%`(C, `LOAD%(_)%?%%`_instr(nt, (`%`_sz(n), sx)?{n : nat, sx : sx}, x, memarg), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(C, `LOAD%(_)%?%%`_instr(nt, (n, sx)?{n : N, sx : sx}, x, memarg), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([(nt : numtype <: valtype)]))) -- if (x!`%`_idx.0 < |C.MEMS_context|) -- if ((n?{n : n} = ?()) <=> (sx?{sx : sx} = ?())) -- if ((2 ^ memarg.ALIGN_memarg!`%`_u32.0) <= ($size(nt) / 8)) @@ -26803,7 +26803,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; 6-typing.watsup:1025.1-1030.29 rule load-1{C : context, nt : numtype, n? : n?, sx? : sx?, x : idx, memarg : memarg, mt : memtype, Inn : Inn}: - `%|-%:%`(C, `LOAD%(_)%?%%`_instr(nt, (`%`_sz(n), sx)?{n : nat, sx : sx}, x, memarg), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(C, `LOAD%(_)%?%%`_instr(nt, (n, sx)?{n : N, sx : sx}, x, memarg), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([(nt : numtype <: valtype)]))) -- if (x!`%`_idx.0 < |C.MEMS_context|) -- if ((n?{n : n} = ?()) <=> (sx?{sx : sx} = ?())) -- if ((2 ^ memarg.ALIGN_memarg!`%`_u32.0) <= ($size(nt) / 8)) @@ -26813,7 +26813,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; 6-typing.watsup:1032.1-1037.29 rule store-0{C : context, nt : numtype, n? : n?, x : idx, memarg : memarg, mt : memtype, Inn : Inn}: - `%|-%:%`(C, STORE_instr(nt, `%`_sz(n)?{n : nat}, x, memarg), `%->_%%`_instrtype(`%`_resulttype([I32_valtype (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + `%|-%:%`(C, STORE_instr(nt, n?{n : N}, x, memarg), `%->_%%`_instrtype(`%`_resulttype([I32_valtype (nt : numtype <: valtype)]), [], `%`_resulttype([]))) -- if (x!`%`_idx.0 < |C.MEMS_context|) -- if ((2 ^ memarg.ALIGN_memarg!`%`_u32.0) <= ($size(nt) / 8)) -- (if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) <= (n / 8)) /\ ((n / 8) < ($size(nt) / 8))))?{n : nat} @@ -26822,7 +26822,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; 6-typing.watsup:1032.1-1037.29 rule store-1{C : context, nt : numtype, n? : n?, x : idx, memarg : memarg, mt : memtype, Inn : Inn}: - `%|-%:%`(C, STORE_instr(nt, `%`_sz(n)?{n : nat}, x, memarg), `%->_%%`_instrtype(`%`_resulttype([I32_valtype (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + `%|-%:%`(C, STORE_instr(nt, n?{n : N}, x, memarg), `%->_%%`_instrtype(`%`_resulttype([I32_valtype (nt : numtype <: valtype)]), [], `%`_resulttype([]))) -- if (x!`%`_idx.0 < |C.MEMS_context|) -- if ((2 ^ memarg.ALIGN_memarg!`%`_u32.0) <= ($size(nt) / 8)) -- (if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) <= (n / 8)) /\ ((n / 8) < ($size(nt) / 8))))?{n : nat} @@ -26852,7 +26852,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; 6-typing.watsup:1054.1-1058.29 rule vload_lane{C : context, n : n, x : idx, memarg : memarg, laneidx : laneidx, mt : memtype}: - `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(n), x, memarg, laneidx), `%->_%%`_instrtype(`%`_resulttype([I32_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, n, x, memarg, laneidx), `%->_%%`_instrtype(`%`_resulttype([I32_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- if (x!`%`_idx.0 < |C.MEMS_context|) -- if ((2 ^ memarg.ALIGN_memarg!`%`_u32.0) < (n / 8)) -- if (laneidx!`%`_laneidx.0 < (128 / n)) @@ -26867,7 +26867,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; 6-typing.watsup:1065.1-1069.29 rule vstore_lane{C : context, n : n, x : idx, memarg : memarg, laneidx : laneidx, mt : memtype}: - `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(n), x, memarg, laneidx), `%->_%%`_instrtype(`%`_resulttype([I32_valtype V128_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, n, x, memarg, laneidx), `%->_%%`_instrtype(`%`_resulttype([I32_valtype V128_valtype]), [], `%`_resulttype([]))) -- if (x!`%`_idx.0 < |C.MEMS_context|) -- if ((2 ^ memarg.ALIGN_memarg!`%`_u32.0) < (n / 8)) -- if (laneidx!`%`_laneidx.0 < (128 / n)) @@ -28029,12 +28029,12 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule load-pack-oob{z : state, i : nat, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) `LOAD%(_)%?%%`_admininstr((Inn : Inn <: numtype), ?((`%`_sz(n), sx)), x, ao)]), [TRAP_admininstr]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) `LOAD%(_)%?%%`_admininstr((Inn : Inn <: numtype), ?((n, sx)), x, ao)]), [TRAP_admininstr]) -- if (((i + ao.OFFSET_memarg!`%`_u32.0) + (n / 8)) > |$mem(z, x).BYTES_meminst|) ;; 8-reduction.watsup rule load-pack-val{z : state, i : nat, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN(n)}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) `LOAD%(_)%?%%`_admininstr((Inn : Inn <: numtype), ?((`%`_sz(n), sx)), x, ao)]), [CONST_admininstr((Inn : Inn <: numtype), $ext(n, $size((Inn : Inn <: numtype)), sx, c))]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) `LOAD%(_)%?%%`_admininstr((Inn : Inn <: numtype), ?((n, sx)), x, ao)]), [CONST_admininstr((Inn : Inn <: numtype), $ext(n, $size((Inn : Inn <: numtype)), sx, c))]) -- where $ibytes(n, c) = $mem(z, x).BYTES_meminst[(i + ao.OFFSET_memarg!`%`_u32.0) : (n / 8)] ;; 8-reduction.watsup @@ -28085,12 +28085,12 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule vload_lane-oob{z : state, i : nat, c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : nat}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c_1) VLOAD_LANE_admininstr(V128_vectype, `%`_sz(N), x, ao, `%`_laneidx(j))]), [TRAP_admininstr]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c_1) VLOAD_LANE_admininstr(V128_vectype, N, x, ao, `%`_laneidx(j))]), [TRAP_admininstr]) -- if (((i + ao.OFFSET_memarg!`%`_u32.0) + (N / 8)) > |$mem(z, x).BYTES_meminst|) ;; 8-reduction.watsup rule vload_lane-val{z : state, i : nat, c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : nat, c : vec_(V128_Vnn), k : nat, Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c_1) VLOAD_LANE_admininstr(V128_vectype, `%`_sz(N), x, ao, `%`_laneidx(j))]), [VCONST_admininstr(V128_vectype, c)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c_1) VLOAD_LANE_admininstr(V128_vectype, N, x, ao, `%`_laneidx(j))]), [VCONST_admininstr(V128_vectype, c)]) -- where M = ($vsize(V128_vectype) / N) -- where $lsize((Jnn : Jnn <: lanetype)) = N -- where $ibytes(N, `%`_iN(k)) = $mem(z, x).BYTES_meminst[(i + ao.OFFSET_memarg!`%`_u32.0) : (N / 8)] @@ -28114,7 +28114,7 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule memory.fill-succ{z : state, i : nat, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) (val : val <: admininstr) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.FILL_admininstr(x)]), [CONST_admininstr(I32_numtype, `%`_num_(i)) (val : val <: admininstr) STORE_admininstr(I32_numtype, ?(`%`_sz(8)), x, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((i + 1))) (val : val <: admininstr) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.FILL_admininstr(x)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) (val : val <: admininstr) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.FILL_admininstr(x)]), [CONST_admininstr(I32_numtype, `%`_num_(i)) (val : val <: admininstr) STORE_admininstr(I32_numtype, ?(8), x, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((i + 1))) (val : val <: admininstr) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.FILL_admininstr(x)]) -- otherwise ;; 8-reduction.watsup @@ -28135,13 +28135,13 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule memory.copy-le{z : state, i_1 : nat, i_2 : nat, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.COPY_admininstr(x_1, x_2)]), [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) `LOAD%(_)%?%%`_admininstr(I32_numtype, ?((`%`_sz(8), U_sx)), x_2, $memarg0) STORE_admininstr(I32_numtype, ?(`%`_sz(8)), x_1, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((i_1 + 1))) CONST_admininstr(I32_numtype, `%`_num_((i_2 + 1))) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.COPY_admininstr(x_1, x_2)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.COPY_admininstr(x_1, x_2)]), [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) `LOAD%(_)%?%%`_admininstr(I32_numtype, ?((8, U_sx)), x_2, $memarg0) STORE_admininstr(I32_numtype, ?(8), x_1, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((i_1 + 1))) CONST_admininstr(I32_numtype, `%`_num_((i_2 + 1))) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.COPY_admininstr(x_1, x_2)]) -- otherwise -- if (i_1 <= i_2) ;; 8-reduction.watsup rule memory.copy-gt{z : state, i_1 : nat, i_2 : nat, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.COPY_admininstr(x_1, x_2)]), [CONST_admininstr(I32_numtype, `%`_num_(((i_1 + n) - 1))) CONST_admininstr(I32_numtype, `%`_num_(((i_2 + n) - 1))) `LOAD%(_)%?%%`_admininstr(I32_numtype, ?((`%`_sz(8), U_sx)), x_2, $memarg0) STORE_admininstr(I32_numtype, ?(`%`_sz(8)), x_1, $memarg0) CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.COPY_admininstr(x_1, x_2)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.COPY_admininstr(x_1, x_2)]), [CONST_admininstr(I32_numtype, `%`_num_(((i_1 + n) - 1))) CONST_admininstr(I32_numtype, `%`_num_(((i_2 + n) - 1))) `LOAD%(_)%?%%`_admininstr(I32_numtype, ?((8, U_sx)), x_2, $memarg0) STORE_admininstr(I32_numtype, ?(8), x_1, $memarg0) CONST_admininstr(I32_numtype, `%`_num_(i_1)) CONST_admininstr(I32_numtype, `%`_num_(i_2)) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.COPY_admininstr(x_1, x_2)]) -- otherwise ;; 8-reduction.watsup @@ -28162,7 +28162,7 @@ relation Step_read: `%~>%`(config, admininstr*) ;; 8-reduction.watsup rule memory.init-succ{z : state, j : nat, i : nat, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(j)) CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.INIT_admininstr(x, y)]), [CONST_admininstr(I32_numtype, `%`_num_(j)) CONST_admininstr(I32_numtype, `%`_num_($data(z, y).BYTES_datainst[i]!`%`_byte.0)) STORE_admininstr(I32_numtype, ?(`%`_sz(8)), x, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((j + 1))) CONST_admininstr(I32_numtype, `%`_num_((i + 1))) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.INIT_admininstr(x, y)]) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(j)) CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr(I32_numtype, `%`_num_(n)) MEMORY.INIT_admininstr(x, y)]), [CONST_admininstr(I32_numtype, `%`_num_(j)) CONST_admininstr(I32_numtype, `%`_num_($data(z, y).BYTES_datainst[i]!`%`_byte.0)) STORE_admininstr(I32_numtype, ?(8), x, $memarg0) CONST_admininstr(I32_numtype, `%`_num_((j + 1))) CONST_admininstr(I32_numtype, `%`_num_((i + 1))) CONST_admininstr(I32_numtype, `%`_num_((n - 1))) MEMORY.INIT_admininstr(x, y)]) -- otherwise -- if (i < |$data(z, y).BYTES_datainst|) @@ -28262,12 +28262,12 @@ relation Step: `%~>%`(config, config) ;; 8-reduction.watsup rule store-pack-oob{z : state, i : nat, Inn : Inn, c : num_((Inn : Inn <: numtype)), nt : numtype, n : n, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr((Inn : Inn <: numtype), c) STORE_admininstr(nt, ?(`%`_sz(n)), x, ao)]), `%;%`_config(z, [TRAP_admininstr])) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr((Inn : Inn <: numtype), c) STORE_admininstr(nt, ?(n), x, ao)]), `%;%`_config(z, [TRAP_admininstr])) -- if (((i + ao.OFFSET_memarg!`%`_u32.0) + (n / 8)) > |$mem(z, x).BYTES_meminst|) ;; 8-reduction.watsup rule store-pack-val{z : state, i : nat, Inn : Inn, c : num_((Inn : Inn <: numtype)), nt : numtype, n : n, x : idx, ao : memarg, b* : byte*}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr((Inn : Inn <: numtype), c) STORE_admininstr(nt, ?(`%`_sz(n)), x, ao)]), `%;%`_config($with_mem(z, x, (i + ao.OFFSET_memarg!`%`_u32.0), (n / 8), b*{b : byte}), [])) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) CONST_admininstr((Inn : Inn <: numtype), c) STORE_admininstr(nt, ?(n), x, ao)]), `%;%`_config($with_mem(z, x, (i + ao.OFFSET_memarg!`%`_u32.0), (n / 8), b*{b : byte}), [])) -- where b*{b : byte} = $ibytes(n, $wrap($size((Inn : Inn <: numtype)), n, c)) ;; 8-reduction.watsup @@ -28282,12 +28282,12 @@ relation Step: `%~>%`(config, config) ;; 8-reduction.watsup rule vstore_lane-oob{z : state, i : nat, c : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : nat}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c) VSTORE_LANE_admininstr(V128_vectype, `%`_sz(N), x, ao, `%`_laneidx(j))]), `%;%`_config(z, [TRAP_admininstr])) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c) VSTORE_LANE_admininstr(V128_vectype, N, x, ao, `%`_laneidx(j))]), `%;%`_config(z, [TRAP_admininstr])) -- if (((i + ao.OFFSET_memarg!`%`_u32.0) + N) > |$mem(z, x).BYTES_meminst|) ;; 8-reduction.watsup rule vstore_lane-val{z : state, i : nat, c : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : nat, b* : byte*, Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c) VSTORE_LANE_admininstr(V128_vectype, `%`_sz(N), x, ao, `%`_laneidx(j))]), `%;%`_config($with_mem(z, x, (i + ao.OFFSET_memarg!`%`_u32.0), (N / 8), b*{b : byte}), [])) + `%~>%`(`%;%`_config(z, [CONST_admininstr(I32_numtype, `%`_num_(i)) VCONST_admininstr(V128_vectype, c) VSTORE_LANE_admininstr(V128_vectype, N, x, ao, `%`_laneidx(j))]), `%;%`_config($with_mem(z, x, (i + ao.OFFSET_memarg!`%`_u32.0), (N / 8), b*{b : byte}), [])) -- where M = (128 / N) -- where $lsize((Jnn : Jnn <: lanetype)) = N -- if (j < |$lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)|) diff --git a/spectec/test-prose/TEST.md b/spectec/test-prose/TEST.md index b7216232e4..21d04dba0c 100644 --- a/spectec/test-prose/TEST.md +++ b/spectec/test-prose/TEST.md @@ -3933,19 +3933,19 @@ validation_of_VVTERNOP V128 vvternop validation_of_VVTESTOP V128 vvtestop - The instruction is valid with type ([V128] ->_ [] ++ [I32]). -validation_of_VUNOP sh vunop_sh +validation_of_VUNOP sh vunop - The instruction is valid with type ([V128] ->_ [] ++ [V128]). -validation_of_VBINOP sh vbinop_sh +validation_of_VBINOP sh vbinop - The instruction is valid with type ([V128, V128] ->_ [] ++ [V128]). -validation_of_VTESTOP sh vtestop_sh +validation_of_VTESTOP sh vtestop - The instruction is valid with type ([V128] ->_ [] ++ [I32]). -validation_of_VRELOP sh vrelop_sh +validation_of_VRELOP sh vrelop - The instruction is valid with type ([V128, V128] ->_ [] ++ [V128]). -validation_of_VSHIFTOP sh vshiftop_sh +validation_of_VSHIFTOP sh vshiftop - The instruction is valid with type ([V128, I32] ->_ [] ++ [V128]). validation_of_VBITMASK sh @@ -6731,25 +6731,25 @@ execution_of_TABLE.INIT x y f. Push the value (I32.CONST (n - 1)) to the stack. g. Execute the instruction (TABLE.INIT x y). -execution_of_LOAD numty_u0 sz_sx_u1? x ao +execution_of_LOAD numty_u0 N_sx_u1? x ao 1. Let z be the current state. 2. Assert: Due to validation, a value of value type I32 is on the top of the stack. 3. Pop the value (I32.CONST i) from the stack. -4. If sz_sx_u1? is not defined, then: +4. If N_sx_u1? is not defined, then: a. Let nt be numty_u0. b. If (((i + ao.OFFSET) + ($size(nt) / 8)) > |$mem(z, x).BYTES|), then: 1) Trap. c. Let c be $inverse_of_nbytes(nt, $mem(z, x).BYTES[(i + ao.OFFSET) : ($size(nt) / 8)]). d. Push the value (nt.CONST c) to the stack. 5. If the type of numty_u0 is Inn, then: - a. If sz_sx_u1? is defined, then: - 1) Let ?(y_0) be sz_sx_u1?. + a. If N_sx_u1? is defined, then: + 1) Let ?(y_0) be N_sx_u1?. 2) Let (n, sx) be y_0. 3) If (((i + ao.OFFSET) + (n / 8)) > |$mem(z, x).BYTES|), then: a) Trap. b. Let Inn be numty_u0. - c. If sz_sx_u1? is defined, then: - 1) Let ?(y_0) be sz_sx_u1?. + c. If N_sx_u1? is defined, then: + 1) Let ?(y_0) be N_sx_u1?. 2) Let (n, sx) be y_0. 3) Let c be $inverse_of_ibytes(n, $mem(z, x).BYTES[(i + ao.OFFSET) : (n / 8)]). 4) Push the value (Inn.CONST $ext(n, $size(Inn), sx, c)) to the stack. @@ -6988,26 +6988,26 @@ execution_of_ELEM.DROP x 1. Let z be the current state. 2. Perform $with_elem(z, x, []). -execution_of_STORE nt sz_u1? x ao +execution_of_STORE nt N_u1? x ao 1. Let z be the current state. 2. Assert: Due to validation, a value of value type numty_u0 is on the top of the stack. 3. Pop the value (numty_u0.CONST c) from the stack. 4. Assert: Due to validation, a value of value type I32 is on the top of the stack. 5. Pop the value (I32.CONST i) from the stack. 6. If (numty_u0 is nt), then: - a. If ((((i + ao.OFFSET) + ($size(nt) / 8)) > |$mem(z, x).BYTES|) and sz_u1? is not defined), then: + a. If ((((i + ao.OFFSET) + ($size(nt) / 8)) > |$mem(z, x).BYTES|) and N_u1? is not defined), then: 1) Trap. - b. If sz_u1? is not defined, then: + b. If N_u1? is not defined, then: 1) Let b* be $nbytes(nt, c). 2) Perform $with_mem(z, x, (i + ao.OFFSET), ($size(nt) / 8), b*). 7. If the type of numty_u0 is Inn, then: - a. If sz_u1? is defined, then: - 1) Let ?(n) be sz_u1?. + a. If N_u1? is defined, then: + 1) Let ?(n) be N_u1?. 2) If (((i + ao.OFFSET) + (n / 8)) > |$mem(z, x).BYTES|), then: a) Trap. b. Let Inn be numty_u0. - c. If sz_u1? is defined, then: - 1) Let ?(n) be sz_u1?. + c. If N_u1? is defined, then: + 1) Let ?(n) be N_u1?. 2) Let b* be $ibytes(n, $wrap($size(Inn), n, c)). 3) Perform $with_mem(z, x, (i + ao.OFFSET), (n / 8), b*). diff --git a/spectec/test-splice/TEST.md b/spectec/test-splice/TEST.md index 0efb7610d0..916834c611 100644 --- a/spectec/test-splice/TEST.md +++ b/spectec/test-splice/TEST.md @@ -54,20 +54,20 @@ $ (../src/exe-watsup/main.exe ../spec/wasm-3.0/*.watsup -l --splice-latex -p spe $$ \begin{array}{@{}lcl@{}l@{}} -{|\mathsf{i{\scriptstyle32}}|} &=& 32 \\ -{|\mathsf{i{\scriptstyle64}}|} &=& 64 \\ -{|\mathsf{f{\scriptstyle32}}|} &=& 32 \\ -{|\mathsf{f{\scriptstyle64}}|} &=& 64 \\ +{|\mathsf{i{\scriptstyle 32}}|} &=& 32 \\ +{|\mathsf{i{\scriptstyle 64}}|} &=& 64 \\ +{|\mathsf{f{\scriptstyle 32}}|} &=& 32 \\ +{|\mathsf{f{\scriptstyle 64}}|} &=& 64 \\ \end{array} $$ $$ \begin{array}{@{}lrrl@{}l@{}} -\mbox{(limits)} & {\mathit{limits}} &::=& {}[ {\mathit{u{\scriptstyle32}}} .. {\mathit{u{\scriptstyle32}}} ] \\[0.8ex] +\mbox{(limits)} & {\mathit{limits}} &::=& {}[ {\mathit{u{\scriptstyle 32}}} .. {\mathit{u{\scriptstyle 32}}} ] \\[0.8ex] \mbox{(global type)} & {\mathit{globaltype}} &::=& {\mathsf{mut}^?}~{\mathit{valtype}} \\ \mbox{(function type)} & {\mathit{functype}} &::=& {\mathit{resulttype}} \rightarrow {\mathit{resulttype}} \\ \mbox{(table type)} & {\mathit{tabletype}} &::=& {\mathit{limits}}~{\mathit{reftype}} \\ -\mbox{(memory type)} & {\mathit{memtype}} &::=& {\mathit{limits}}~\mathsf{i{\scriptstyle8}} \\[0.8ex] +\mbox{(memory type)} & {\mathit{memtype}} &::=& {\mathit{limits}}~\mathsf{i{\scriptstyle 8}} \\[0.8ex] {} \\[-2ex] \mbox{(external type)} & {\mathit{externtype}} &::=& \mathsf{func}~{\mathit{typeuse}} ~|~ \mathsf{global}~{\mathit{globaltype}} ~|~ \mathsf{table}~{\mathit{tabletype}} ~|~ \mathsf{mem}~{\mathit{memtype}} \\ \end{array} @@ -93,20 +93,20 @@ $$ {\mathit{numtype}} {.} {{\mathit{relop}}}_{{\mathit{numtype}}} \\ &&|& {\mathit{numtype}}_1 {.} {{\mathit{cvtop}}}{\mathsf{\_}}{{\mathit{numtype}}_2} &\qquad \mbox{if}~{\mathit{numtype}}_1 \neq {\mathit{numtype}}_2 \\ &&|& -{{\mathit{numtype}}{.}\mathsf{extend}}{n}{\mathsf{\_}}{\mathsf{s}} \\ &&|& +{{\mathit{numtype}}{.}\mathsf{extend}}{{\mathit{{\scriptstyle N}}}}{\mathsf{\_}}{\mathsf{s}} \\ &&|& \mathsf{local.get}~{\mathit{localidx}} \\ &&|& \mathsf{local.set}~{\mathit{localidx}} \\ &&|& \mathsf{local.tee}~{\mathit{localidx}} \\ &&|& \mathsf{global.get}~{\mathit{globalidx}} \\ &&|& \mathsf{global.set}~{\mathit{globalidx}} \\ &&|& -{{\mathit{numtype}}{.}\mathsf{load}}{{({{\mathit{sz}}}{\mathsf{\_}}{{\mathit{sx}}})^?}}~{\mathit{memidx}}~{\mathit{memarg}} - &\qquad \mbox{if}~({\mathit{numtype}} = {\mathsf{i}}{n} \land {\mathit{sz}} < {|{\mathsf{i}}{n}|})^? \\ &&|& -{{\mathit{numtype}}{.}\mathsf{store}}{{{\mathit{sz}}^?}}~{\mathit{memidx}}~{\mathit{memarg}} - &\qquad \mbox{if}~({\mathit{numtype}} = {\mathsf{i}}{n} \land {\mathit{sz}} < {|{\mathsf{i}}{n}|})^? \\ &&|& +{{\mathit{numtype}}{.}\mathsf{load}}{{({{\mathit{{\scriptstyle N}}}}{\mathsf{\_}}{{\mathit{sx}}})^?}}~{\mathit{memidx}}~{\mathit{memarg}} + &\qquad \mbox{if}~({\mathit{numtype}} = {\mathsf{i}}{{\mathit{{\scriptstyle N}}}} \land {\mathit{{\scriptstyle N}}} < {|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|})^? \\ &&|& +{{\mathit{numtype}}{.}\mathsf{store}}{{{\mathit{{\scriptstyle N}}}^?}}~{\mathit{memidx}}~{\mathit{memarg}} + &\qquad \mbox{if}~({\mathit{numtype}} = {\mathsf{i}}{{\mathit{{\scriptstyle N}}}} \land {\mathit{{\scriptstyle N}}} < {|{\mathsf{i}}{{\mathit{{\scriptstyle N}}}}|})^? \\ &&|& {{\mathit{vectype}}{.}\mathsf{load}}{{{\mathit{vloadop}}^?}}~{\mathit{memidx}}~{\mathit{memarg}} \\ &&|& -{{\mathit{vectype}}{.}\mathsf{load}}{{\mathit{sz}}}{\mathsf{\_}}{\mathsf{lane}}~{\mathit{memidx}}~{\mathit{memarg}}~{\mathit{laneidx}} \\ &&|& +{{\mathit{vectype}}{.}\mathsf{load}}{{\mathit{{\scriptstyle N}}}}{\mathsf{\_}}{\mathsf{lane}}~{\mathit{memidx}}~{\mathit{memarg}}~{\mathit{laneidx}} \\ &&|& {\mathit{vectype}}{.}\mathsf{store}~{\mathit{memidx}}~{\mathit{memarg}} \\ &&|& -{{\mathit{vectype}}{.}\mathsf{store}}{{\mathit{sz}}}{\mathsf{\_}}{\mathsf{lane}}~{\mathit{memidx}}~{\mathit{memarg}}~{\mathit{laneidx}} \\ &&|& +{{\mathit{vectype}}{.}\mathsf{store}}{{\mathit{{\scriptstyle N}}}}{\mathsf{\_}}{\mathsf{lane}}~{\mathit{memidx}}~{\mathit{memarg}}~{\mathit{laneidx}} \\ &&|& \mathsf{memory.size}~{\mathit{memidx}} \\ &&|& \mathsf{memory.grow}~{\mathit{memidx}} \\ &&|& \mathsf{memory.fill}~{\mathit{memidx}} \\ &&|& @@ -126,25 +126,25 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \epsilon : \epsilon \rightarrow \epsilon +{\mathit{{\scriptstyle C}}} \vdash \epsilon : \epsilon \rightarrow \epsilon } \qquad \frac{ -C \vdash {\mathit{instr}}_1 : {t_1^\ast}~{\rightarrow}_{{x_1^\ast}}\,{t_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{instr}}_1 : {t_1^\ast}~{\rightarrow}_{{x_1^\ast}}\,{t_2^\ast} \qquad -(C{.}\mathsf{locals}{}[x_1] = {\mathit{init}}~t)^\ast +({\mathit{{\scriptstyle C}}}{.}\mathsf{locals}{}[x_1] = {\mathit{init}}~t)^\ast \qquad -C{}[\mathsf{local}{}[{x_1^\ast}] = {(\mathsf{set}~t)^\ast}] \vdash {{\mathit{instr}}_2^\ast} : {t_2^\ast}~{\rightarrow}_{{x_2^\ast}}\,{t_3^\ast} +{\mathit{{\scriptstyle C}}}{}[\mathsf{local}{}[{x_1^\ast}] = {(\mathsf{set}~t)^\ast}] \vdash {{\mathit{instr}}_2^\ast} : {t_2^\ast}~{\rightarrow}_{{x_2^\ast}}\,{t_3^\ast} }{ -C \vdash {\mathit{instr}}_1~{{\mathit{instr}}_2^\ast} : {t_1^\ast}~{\rightarrow}_{{x_1^\ast}~{x_2^\ast}}\,{t_3^\ast} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{instr}}_1~{{\mathit{instr}}_2^\ast} : {t_1^\ast}~{\rightarrow}_{{x_1^\ast}~{x_2^\ast}}\,{t_3^\ast} } \\[3ex]\displaystyle \frac{ -C \vdash {{\mathit{instr}}^\ast} : {t_1^\ast}~{\rightarrow}_{{x^\ast}}\,{t_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash {{\mathit{instr}}^\ast} : {t_1^\ast}~{\rightarrow}_{{x^\ast}}\,{t_2^\ast} \qquad -C \vdash {t^\ast} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {t^\ast} : \mathsf{ok} }{ -C \vdash {{\mathit{instr}}^\ast} : ({t^\ast}~{t_1^\ast})~{\rightarrow}_{{x^\ast}}\,({t^\ast}~{t_2^\ast}) +{\mathit{{\scriptstyle C}}} \vdash {{\mathit{instr}}^\ast} : ({t^\ast}~{t_1^\ast})~{\rightarrow}_{{x^\ast}}\,({t^\ast}~{t_2^\ast}) } \qquad \end{array} @@ -154,28 +154,28 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \epsilon : \epsilon \rightarrow \epsilon +{\mathit{{\scriptstyle C}}} \vdash \epsilon : \epsilon \rightarrow \epsilon } \, {[\textsc{\scriptsize T{-}instr*{-}empty}]} \qquad \frac{ -C \vdash {{\mathit{instr}}^\ast} : {t_1^\ast}~{\rightarrow}_{{x^\ast}}\,{t_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash {{\mathit{instr}}^\ast} : {t_1^\ast}~{\rightarrow}_{{x^\ast}}\,{t_2^\ast} \qquad -C \vdash {t^\ast} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {t^\ast} : \mathsf{ok} }{ -C \vdash {{\mathit{instr}}^\ast} : ({t^\ast}~{t_1^\ast})~{\rightarrow}_{{x^\ast}}\,({t^\ast}~{t_2^\ast}) +{\mathit{{\scriptstyle C}}} \vdash {{\mathit{instr}}^\ast} : ({t^\ast}~{t_1^\ast})~{\rightarrow}_{{x^\ast}}\,({t^\ast}~{t_2^\ast}) } \, {[\textsc{\scriptsize T{-}instr*{-}frame}]} \\[3ex]\displaystyle \frac{ }{ -C \vdash \epsilon : \epsilon \rightarrow \epsilon +{\mathit{{\scriptstyle C}}} \vdash \epsilon : \epsilon \rightarrow \epsilon } \, {[\textsc{\scriptsize T{-}instr*{-}empty}]} \qquad \frac{ -C \vdash {{\mathit{instr}}^\ast} : {t_1^\ast}~{\rightarrow}_{{x^\ast}}\,{t_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash {{\mathit{instr}}^\ast} : {t_1^\ast}~{\rightarrow}_{{x^\ast}}\,{t_2^\ast} \qquad -C \vdash {t^\ast} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {t^\ast} : \mathsf{ok} }{ -C \vdash {{\mathit{instr}}^\ast} : ({t^\ast}~{t_1^\ast})~{\rightarrow}_{{x^\ast}}\,({t^\ast}~{t_2^\ast}) +{\mathit{{\scriptstyle C}}} \vdash {{\mathit{instr}}^\ast} : ({t^\ast}~{t_1^\ast})~{\rightarrow}_{{x^\ast}}\,({t^\ast}~{t_2^\ast}) } \, {[\textsc{\scriptsize T{-}instr*{-}frame}]} \qquad \end{array} @@ -184,20 +184,20 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {t_1^\ast} \rightarrow {t_2^\ast} : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash {t_1^\ast} \rightarrow {t_2^\ast} : \mathsf{ok} }{ -C \vdash \mathsf{unreachable} : {t_1^\ast} \rightarrow {t_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{unreachable} : {t_1^\ast} \rightarrow {t_2^\ast} } \qquad \frac{ }{ -C \vdash \mathsf{nop} : \epsilon \rightarrow \epsilon +{\mathit{{\scriptstyle C}}} \vdash \mathsf{nop} : \epsilon \rightarrow \epsilon } \qquad \frac{ -C \vdash t : \mathsf{ok} +{\mathit{{\scriptstyle C}}} \vdash t : \mathsf{ok} }{ -C \vdash \mathsf{drop} : t \rightarrow \epsilon +{\mathit{{\scriptstyle C}}} \vdash \mathsf{drop} : t \rightarrow \epsilon } \qquad \end{array} @@ -206,11 +206,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{bt}} : {t_1^\ast} \rightarrow {t_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{bt}} : {t_1^\ast} \rightarrow {t_2^\ast} \qquad -C, \mathsf{labels}~({t_2^\ast}) \vdash {{\mathit{instr}}^\ast} : {t_1^\ast}~{\rightarrow}_{{x^\ast}}\,{t_2^\ast} +{\mathit{{\scriptstyle C}}}, \mathsf{labels}~({t_2^\ast}) \vdash {{\mathit{instr}}^\ast} : {t_1^\ast}~{\rightarrow}_{{x^\ast}}\,{t_2^\ast} }{ -C \vdash \mathsf{block}~{\mathit{bt}}~{{\mathit{instr}}^\ast} : {t_1^\ast} \rightarrow {t_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{block}~{\mathit{bt}}~{{\mathit{instr}}^\ast} : {t_1^\ast} \rightarrow {t_2^\ast} } \, {[\textsc{\scriptsize T{-}block}]} \qquad \end{array} @@ -219,11 +219,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{bt}} : {t_1^\ast} \rightarrow {t_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{bt}} : {t_1^\ast} \rightarrow {t_2^\ast} \qquad -C, \mathsf{labels}~({t_1^\ast}) \vdash {{\mathit{instr}}^\ast} : {t_1^\ast}~{\rightarrow}_{{x^\ast}}\,{t_2^\ast} +{\mathit{{\scriptstyle C}}}, \mathsf{labels}~({t_1^\ast}) \vdash {{\mathit{instr}}^\ast} : {t_1^\ast}~{\rightarrow}_{{x^\ast}}\,{t_2^\ast} }{ -C \vdash \mathsf{loop}~{\mathit{bt}}~{{\mathit{instr}}^\ast} : {t_1^\ast} \rightarrow {t_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{loop}~{\mathit{bt}}~{{\mathit{instr}}^\ast} : {t_1^\ast} \rightarrow {t_2^\ast} } \, {[\textsc{\scriptsize T{-}loop}]} \qquad \end{array} @@ -232,13 +232,13 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{bt}} : {t_1^\ast} \rightarrow {t_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash {\mathit{bt}} : {t_1^\ast} \rightarrow {t_2^\ast} \qquad -C, \mathsf{labels}~({t_2^\ast}) \vdash {{\mathit{instr}}_1^\ast} : {t_1^\ast}~{\rightarrow}_{{x_1^\ast}}\,{t_2^\ast} +{\mathit{{\scriptstyle C}}}, \mathsf{labels}~({t_2^\ast}) \vdash {{\mathit{instr}}_1^\ast} : {t_1^\ast}~{\rightarrow}_{{x_1^\ast}}\,{t_2^\ast} \qquad -C, \mathsf{labels}~({t_2^\ast}) \vdash {{\mathit{instr}}_2^\ast} : {t_1^\ast}~{\rightarrow}_{{x_2^\ast}}\,{t_2^\ast} +{\mathit{{\scriptstyle C}}}, \mathsf{labels}~({t_2^\ast}) \vdash {{\mathit{instr}}_2^\ast} : {t_1^\ast}~{\rightarrow}_{{x_2^\ast}}\,{t_2^\ast} }{ -C \vdash \mathsf{if}~{\mathit{bt}}~{{\mathit{instr}}_1^\ast}~\mathsf{else}~{{\mathit{instr}}_2^\ast} : {t_1^\ast}~\mathsf{i{\scriptstyle32}} \rightarrow {t_2^\ast} +{\mathit{{\scriptstyle C}}} \vdash \mathsf{if}~{\mathit{bt}}~{{\mathit{instr}}_1^\ast}~\mathsf{else}~{{\mathit{instr}}_2^\ast} : {t_1^\ast}~\mathsf{i{\scriptstyle 32}} \rightarrow {t_2^\ast} } \, {[\textsc{\scriptsize T{-}if}]} \qquad \end{array} @@ -252,11 +252,11 @@ $$ $$ \begin{array}{@{}lcl@{}l@{}} -{{\mathrm{default}}}_{\mathsf{i{\scriptstyle32}}} &=& (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~0) \\ -{{\mathrm{default}}}_{\mathsf{i{\scriptstyle64}}} &=& (\mathsf{i{\scriptstyle64}}{.}\mathsf{const}~0) \\ -{{\mathrm{default}}}_{\mathsf{f{\scriptstyle32}}} &=& (\mathsf{f{\scriptstyle32}}{.}\mathsf{const}~{+0}) \\ -{{\mathrm{default}}}_{\mathsf{f{\scriptstyle64}}} &=& (\mathsf{f{\scriptstyle64}}{.}\mathsf{const}~{+0}) \\ -{{\mathrm{default}}}_{\mathsf{v{\scriptstyle128}}} &=& (\mathsf{v{\scriptstyle128}}{.}\mathsf{const}~0) \\ +{{\mathrm{default}}}_{\mathsf{i{\scriptstyle 32}}} &=& (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~0) \\ +{{\mathrm{default}}}_{\mathsf{i{\scriptstyle 64}}} &=& (\mathsf{i{\scriptstyle 64}}{.}\mathsf{const}~0) \\ +{{\mathrm{default}}}_{\mathsf{f{\scriptstyle 32}}} &=& (\mathsf{f{\scriptstyle 32}}{.}\mathsf{const}~{+0}) \\ +{{\mathrm{default}}}_{\mathsf{f{\scriptstyle 64}}} &=& (\mathsf{f{\scriptstyle 64}}{.}\mathsf{const}~{+0}) \\ +{{\mathrm{default}}}_{\mathsf{v{\scriptstyle 128}}} &=& (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~0) \\ {{\mathrm{default}}}_{\mathsf{ref}~\mathsf{null}~{\mathit{ht}}} &=& (\mathsf{ref.null}~{\mathit{ht}}) \\ {{\mathrm{default}}}_{\mathsf{ref}~\epsilon~{\mathit{ht}}} &=& \epsilon \\ \end{array} @@ -290,18 +290,18 @@ $$ &\qquad \mbox{if}~{{\mathrm{blocktype}}}_{z}({\mathit{bt}}) = {t_1^{m}} \rightarrow {t_2^{n}} \\ {[\textsc{\scriptsize E{-}loop}]} \quad & z ; {{\mathit{val}}^{m}}~(\mathsf{loop}~{\mathit{bt}}~{{\mathit{instr}}^\ast}) &\hookrightarrow& ({{\mathsf{label}}_{m}}{\{ \mathsf{loop}~{\mathit{bt}}~{{\mathit{instr}}^\ast} \}}~{{\mathit{val}}^{m}}~{{\mathit{instr}}^\ast}) &\qquad \mbox{if}~{{\mathrm{blocktype}}}_{z}({\mathit{bt}}) = {t_1^{m}} \rightarrow {t_2^{n}} \\[0.8ex] -{[\textsc{\scriptsize E{-}if{-}true}]} \quad & (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~c)~(\mathsf{if}~{\mathit{bt}}~{{\mathit{instr}}_1^\ast}~\mathsf{else}~{{\mathit{instr}}_2^\ast}) &\hookrightarrow& (\mathsf{block}~{\mathit{bt}}~{{\mathit{instr}}_1^\ast}) +{[\textsc{\scriptsize E{-}if{-}true}]} \quad & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~c)~(\mathsf{if}~{\mathit{bt}}~{{\mathit{instr}}_1^\ast}~\mathsf{else}~{{\mathit{instr}}_2^\ast}) &\hookrightarrow& (\mathsf{block}~{\mathit{bt}}~{{\mathit{instr}}_1^\ast}) &\qquad \mbox{if}~c \neq 0 \\ -{[\textsc{\scriptsize E{-}if{-}false}]} \quad & (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~c)~(\mathsf{if}~{\mathit{bt}}~{{\mathit{instr}}_1^\ast}~\mathsf{else}~{{\mathit{instr}}_2^\ast}) &\hookrightarrow& (\mathsf{block}~{\mathit{bt}}~{{\mathit{instr}}_2^\ast}) +{[\textsc{\scriptsize E{-}if{-}false}]} \quad & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~c)~(\mathsf{if}~{\mathit{bt}}~{{\mathit{instr}}_1^\ast}~\mathsf{else}~{{\mathit{instr}}_2^\ast}) &\hookrightarrow& (\mathsf{block}~{\mathit{bt}}~{{\mathit{instr}}_2^\ast}) &\qquad \mbox{if}~c = 0 \\ \end{array} $$ $$ \begin{array}{@{}l@{}rcl@{}l@{}} -{[\textsc{\scriptsize E{-}if{-}true}]} \quad & (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~c)~(\mathsf{if}~{\mathit{bt}}~{{\mathit{instr}}_1^\ast}~\mathsf{else}~{{\mathit{instr}}_2^\ast}) &\hookrightarrow& (\mathsf{block}~{\mathit{bt}}~{{\mathit{instr}}_1^\ast}) +{[\textsc{\scriptsize E{-}if{-}true}]} \quad & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~c)~(\mathsf{if}~{\mathit{bt}}~{{\mathit{instr}}_1^\ast}~\mathsf{else}~{{\mathit{instr}}_2^\ast}) &\hookrightarrow& (\mathsf{block}~{\mathit{bt}}~{{\mathit{instr}}_1^\ast}) &\qquad \mbox{if}~c \neq 0 \\ -{[\textsc{\scriptsize E{-}if{-}false}]} \quad & (\mathsf{i{\scriptstyle32}}{.}\mathsf{const}~c)~(\mathsf{if}~{\mathit{bt}}~{{\mathit{instr}}_1^\ast}~\mathsf{else}~{{\mathit{instr}}_2^\ast}) &\hookrightarrow& (\mathsf{block}~{\mathit{bt}}~{{\mathit{instr}}_2^\ast}) +{[\textsc{\scriptsize E{-}if{-}false}]} \quad & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~c)~(\mathsf{if}~{\mathit{bt}}~{{\mathit{instr}}_1^\ast}~\mathsf{else}~{{\mathit{instr}}_2^\ast}) &\hookrightarrow& (\mathsf{block}~{\mathit{bt}}~{{\mathit{instr}}_2^\ast}) &\qquad \mbox{if}~c = 0 \\ \end{array} $$