Simd
Simd -- explicit 128-bit SIMD vector values (F32x4, F64x2, I32x4, I64x2, U8x16). Fixed width: identical semantics on every target, interpreted or compiled. See docs/simd-vectorization.md.
Boundary rule: lane get/set traffic in widened Int/Float; integer narrowing wraps mod 2^w two's-complement; f32 narrowing rounds to nearest-even; u8 loads zero-extend (0..255), i32 sign-extends. Integer lane arithmetic wraps. Float lanes are true single/double precision. min/max/hmin/hmax on floats use minNum/maxNum semantics (a NaN operand loses to the other; both NaN is NaN). sum accumulates sequentially (f32x4/f64x2 in double, i32x4/i64x2 in i64).
Lane order: lane 0 is the first make_* argument / lowest-addressed on load.
Mask convention: select/any/all/first_set all read a lane's HIGH BIT (its sign bit), matching hardware blend/movemask. eq/lt/gt still produce canonical all-ones/all-zero lanes, which read the same either way; a hand-rolled non-canonical mask lane follows the high-bit rule.
Functions
Per-lane addition, rounded to binary32.
Per-lane addition.
Per-lane addition, wraps mod 2^w.
Per-lane addition, wraps mod 2^w.
True if every lane's high bit is set (interprets [v] as a mask).
True if every lane's high bit is set (interprets [v] as a mask).
True if every lane's high bit is set (interprets [v] as a mask).
True if every lane's high bit is set (interprets [v] as a mask).
True if every lane's high bit is set (interprets [v] as a mask).
Per-lane bitwise AND.
Per-lane bitwise AND.
Per-lane bitwise AND.
Per-lane bitwise AND.
Per-lane bitwise AND.
True if any lane's high bit is set (interprets [v] as a mask).
True if any lane's high bit is set (interprets [v] as a mask).
True if any lane's high bit is set (interprets [v] as a mask).
True if any lane's high bit is set (interprets [v] as a mask).
True if any lane's high bit is set (interprets [v] as a mask).
Per-lane division.
Per-lane division.
Per-lane equality mask (all-ones lane where equal, zero otherwise).
Per-lane equality mask (all-ones lane where equal, zero otherwise).
Per-lane equality mask (all-ones lane where equal, zero otherwise).
Per-lane equality mask (all-ones lane where equal, zero otherwise).
Per-lane equality mask (all-ones lane where equal, zero otherwise).
Lane [i] (0-3), widened to Float exactly.
Lane [i] (0-1), widened to Float exactly.
Lane [i] (0-3), widened to Int exactly.
Lane [i] (0-1), widened to Int exactly.
Lane [i] (0-15), widened to Int exactly.
Index of the first lane whose high bit is set (interprets [v] as a mask), or -1 if none.
Index of the first lane whose high bit is set (interprets [v] as a mask), or -1 if none.
Index of the first lane whose high bit is set (interprets [v] as a mask), or -1 if none.
Index of the first lane whose high bit is set (interprets [v] as a mask), or -1 if none.
Index of the first lane whose high bit is set (interprets [v] as a mask), or -1 if none.
Per-lane fused multiply-add: [a] * [b] + [c], one rounding.
Per-lane fused multiply-add: [a] * [b] + [c], one rounding.
Per-lane greater-than mask (all-ones lane where [a] > [b], zero otherwise).
Per-lane greater-than mask (all-ones lane where [a] > [b], zero otherwise).
Per-lane greater-than mask (all-ones lane where [a] > [b], zero otherwise).
Per-lane greater-than mask (all-ones lane where [a] > [b], zero otherwise).
Per-lane greater-than mask (all-ones lane where [a] > [b], zero otherwise).
Horizontal maximum of all lanes (minNum/maxNum: a NaN lane yields the other operand; both NaN yields NaN).
Horizontal maximum of all lanes (minNum/maxNum: a NaN lane yields the other operand; both NaN yields NaN).
Horizontal maximum of all lanes.
Horizontal maximum of all lanes.
Horizontal minimum of all lanes (minNum/maxNum: a NaN lane yields the other operand; both NaN yields NaN).
Horizontal minimum of all lanes (minNum/maxNum: a NaN lane yields the other operand; both NaN yields NaN).
Horizontal minimum of all lanes.
Horizontal minimum of all lanes.
Load 4 lanes from [arr] starting at index [i] (dynamic bounds check; panics out of range).
Load 2 lanes from [arr] starting at index [i] (dynamic bounds check; panics out of range).
Load 4 lanes from [arr] starting at index [i] (dynamic bounds check; panics out of range).
Load 2 lanes from [arr] starting at index [i] (dynamic bounds check; panics out of range).
Load 16 lanes from [arr] starting at index [i] (dynamic bounds check; panics out of range).
Per-lane less-than mask (all-ones lane where [a] < [b], zero otherwise).
Per-lane less-than mask (all-ones lane where [a] < [b], zero otherwise).
Per-lane less-than mask (all-ones lane where [a] < [b], zero otherwise).
Per-lane less-than mask (all-ones lane where [a] < [b], zero otherwise).
Per-lane less-than mask (all-ones lane where [a] < [b], zero otherwise).
Vector with lane 0 = the first argument, ..., lane 3 = the last.
Vector with lane 0 = the first argument, ..., lane 1 = the last.
Vector with lane 0 = the first argument, ..., lane 3 = the last.
Vector with lane 0 = the first argument, ..., lane 1 = the last.
Vector with lane 0 = the first argument, ..., lane 15 = the last.
Per-lane maximum (minNum/maxNum: a NaN lane yields the other operand; both NaN yields NaN).
Per-lane maximum (minNum/maxNum: a NaN lane yields the other operand; both NaN yields NaN).
Per-lane maximum.
Per-lane maximum.
Per-lane minimum (minNum/maxNum: a NaN lane yields the other operand; both NaN yields NaN).
Per-lane minimum (minNum/maxNum: a NaN lane yields the other operand; both NaN yields NaN).
Per-lane minimum.
Per-lane minimum.
Per-lane multiplication, rounded to binary32.
Per-lane multiplication.
Per-lane multiplication, wraps mod 2^w.
Per-lane multiplication, wraps mod 2^w.
Per-lane bitwise complement.
Per-lane bitwise complement.
Per-lane bitwise complement.
Per-lane bitwise complement.
Per-lane bitwise complement.
Per-lane bitwise OR.
Per-lane bitwise OR.
Per-lane bitwise OR.
Per-lane bitwise OR.
Per-lane bitwise OR.
[v] with lane [i] set to [x] (rounded to binary32).
[v] with lane [i] set to [x].
[v] with lane [i] set to [x].
[v] with lane [i] set to [x].
[v] with lane [i] set to [x].
Per-lane: [mask]'s lane high bit set selects [a]'s lane, else [b]'s lane.
Per-lane: [mask]'s lane high bit set selects [a]'s lane, else [b]'s lane.
Per-lane: [mask]'s lane high bit set selects [a]'s lane, else [b]'s lane.
Per-lane: [mask]'s lane high bit set selects [a]'s lane, else [b]'s lane.
Per-lane: [mask]'s lane high bit set selects [a]'s lane, else [b]'s lane.
Per-lane logical shift left by [n] (masked to the element width).
Per-lane logical shift left by [n] (masked to the element width).
Per-lane arithmetic shift right by [n] (masked to the element width, sign-extending).
Per-lane arithmetic shift right by [n] (masked to the element width, sign-extending).
All lanes set to [v] (rounded to binary32).
All lanes set to [v].
All lanes set to [v].
All lanes set to [v].
All lanes set to [v].
Per-lane square root.
Per-lane square root.
Store [v]'s 4 lanes into [arr] starting at index [i], returning the updated array (dynamic bounds check; panics out of range).
Store [v]'s 2 lanes into [arr] starting at index [i], returning the updated array (dynamic bounds check; panics out of range).
Store [v]'s 4 lanes into [arr] starting at index [i], returning the updated array (dynamic bounds check; panics out of range).
Store [v]'s 2 lanes into [arr] starting at index [i], returning the updated array (dynamic bounds check; panics out of range).
Store [v]'s 16 lanes into [arr] starting at index [i], returning the updated array (dynamic bounds check; panics out of range).
Per-lane subtraction, rounded to binary32.
Per-lane subtraction.
Per-lane subtraction, wraps mod 2^w.
Per-lane subtraction, wraps mod 2^w.
Horizontal sum of all lanes, accumulated sequentially in double.
Horizontal sum of all lanes, accumulated sequentially in double.
Horizontal sum of all lanes, accumulated sequentially in i64.
Horizontal sum of all lanes, accumulated sequentially in i64.
Per-lane bitwise XOR.
Per-lane bitwise XOR.
Per-lane bitwise XOR.
Per-lane bitwise XOR.
Per-lane bitwise XOR.