← Standard library

int32x4

struct int32x4

Available without an import.

A 128-bit SIMD value containing 4 int32 lanes. Arithmetic operates lane-wise, with integer overflow wrapping within each lane. Lane and WithLane require constant indices; bracket indexing supports checked runtime indices. Comparisons return all-one/all-zero integer masks. Bit reinterpretation involving floating-point lanes canonicalizes NaNs.

Simd.wax:930

Members

Splatmethod

public static fn Splat(int32 value) : int32x4

Copies one scalar value into every lane.

Simd.wax:936

Zeromethod

public static fn Zero() : int32x4

Returns a vector whose lanes are all zero.

Simd.wax:940

constructorconstructor

public constructor (int32 l0, int32 l1, int32 l2, int32 l3)

Creates a vector from scalar lanes in ascending index order.

Simd.wax:944

Lanemethod

public fn Lane(int32 index) : int32

Reads a compile-time constant lane index in [0, 4). Invalid or nonconstant indices are rejected; use bracket indexing for runtime indices.

Simd.wax:949

ReduceSummethod

public fn ReduceSum() : int32

Sums every lane into the scalar result. Arithmetic wraps at the scalar result width; narrow lanes are widened before addition.

Simd.wax:954

ReduceMinmethod

public fn ReduceMin() : int32

Reduces all lanes to their minimum.

Simd.wax:958

ReduceMaxmethod

public fn ReduceMax() : int32

Reduces all lanes to their maximum.

Simd.wax:962

Minmethod

public fn Min(int32x4 other) : int32x4

Selects the smaller value in each lane.

Simd.wax:966

Maxmethod

public fn Max(int32x4 other) : int32x4

Selects the larger value in each lane.

Simd.wax:970

Absmethod

public fn Abs() : int32x4

Returns each lane's magnitude. A minimum signed lane remains the negative minimum because its positive magnitude does not fit.

Simd.wax:975

Eqmethod

public fn Eq(int32x4 other) : int32x4

Compares corresponding lanes for equal, returning all-one bits for true and all-zero bits for false. Ordered comparisons use the lane type's signedness.

Simd.wax:980

Nemethod

public fn Ne(int32x4 other) : int32x4

Compares corresponding lanes for unequal, returning all-one bits for true and all-zero bits for false. Ordered comparisons use the lane type's signedness.

Simd.wax:985

Ltmethod

public fn Lt(int32x4 other) : int32x4

Compares corresponding lanes for less, returning all-one bits for true and all-zero bits for false. Ordered comparisons use the lane type's signedness.

Simd.wax:990

Lemethod

public fn Le(int32x4 other) : int32x4

Compares corresponding lanes for less or equal, returning all-one bits for true and all-zero bits for false. Ordered comparisons use the lane type's signedness.

Simd.wax:995

Gtmethod

public fn Gt(int32x4 other) : int32x4

Compares corresponding lanes for greater, returning all-one bits for true and all-zero bits for false. Ordered comparisons use the lane type's signedness.

Simd.wax:1000

Gemethod

public fn Ge(int32x4 other) : int32x4

Compares corresponding lanes for greater or equal, returning all-one bits for true and all-zero bits for false. Ordered comparisons use the lane type's signedness.

Simd.wax:1005

AnyTruemethod

public fn AnyTrue() : bool

Tests whether any lane has a nonzero bit pattern.

Simd.wax:1009

AllTruemethod

public fn AllTrue() : bool

Tests whether every lane has a nonzero bit pattern.

Simd.wax:1013

Bitmaskmethod

public fn Bitmask() : int32

Packs each lane's most significant bit into the corresponding bit of an integer; lane zero becomes bit zero.

Simd.wax:1018

WithLanemethod

public fn WithLane(int32 index, int32 value) : int32x4

Returns a copy with one lane replaced. The index must be a compile-time constant in [0, 4); use bracket assignment for runtime indices.

Simd.wax:1023

Shufflemethod

public fn Shuffle(int32 l0, int32 l1, int32 l2, int32 l3) : int32x4

Returns lanes selected in argument order. Every index must be a compile-time constant in [0, 4); repeats are allowed.

Simd.wax:1028

Selectmethod

public fn Select(int32x4 a, int32x4 b) : int32x4

Selects bits from a where this mask has one bits and from b where it has zero bits. Comparison masks select entire lanes; arbitrary masks can mix bits within a lane.

Simd.wax:1033

Blendmethod

public fn Blend(float32x4 a, float32x4 b) : float32x4

Selects floating-point bits from a where this integer mask has one bits and from b where it has zero bits. Comparison masks select entire lanes.

Simd.wax:1040

WidenLowmethod

public fn WidenLow() : int64x2

Widens the low half of the lanes to twice their width, using sign extension.

Simd.wax:1044

WidenHighmethod

public fn WidenHigh() : int64x2

Widens the high half of the lanes to twice their width, using sign extension.

Simd.wax:1048

WideningMulLowmethod

public fn WideningMulLow(int32x4 other) : int64x2

Multiplies the low-half lane pairs, widening operands first so products fit the doubled lane width.

Simd.wax:1053

WideningMulHighmethod

public fn WideningMulHigh(int32x4 other) : int64x2

Multiplies the high-half lane pairs, widening operands first so products fit the doubled lane width.

Simd.wax:1058

Narrowmethod

public fn Narrow(int32x4 other) : int16x8

Saturates both vectors into half-width lanes. Receiver lanes form the low half and other lanes the high half; values clamp to the destination range.

Simd.wax:1063

AsInt8x16method

public fn AsInt8x16() : int8x16

Reinterprets this 128-bit value with the destination lane shape rather than converting numerically. Floating-point NaN lanes are canonicalized on either side of the reinterpretation; NaN payload bits are not preserved.

Simd.wax:1069

AsUint8x16method

public fn AsUint8x16() : uint8x16

Reinterprets this 128-bit value with the destination lane shape rather than converting numerically. Floating-point NaN lanes are canonicalized on either side of the reinterpretation; NaN payload bits are not preserved.

Simd.wax:1075

AsInt16x8method

public fn AsInt16x8() : int16x8

Reinterprets this 128-bit value with the destination lane shape rather than converting numerically. Floating-point NaN lanes are canonicalized on either side of the reinterpretation; NaN payload bits are not preserved.

Simd.wax:1081

AsUint16x8method

public fn AsUint16x8() : uint16x8

Reinterprets this 128-bit value with the destination lane shape rather than converting numerically. Floating-point NaN lanes are canonicalized on either side of the reinterpretation; NaN payload bits are not preserved.

Simd.wax:1087

AsUint32x4method

public fn AsUint32x4() : uint32x4

Reinterprets this 128-bit value with the destination lane shape rather than converting numerically. Floating-point NaN lanes are canonicalized on either side of the reinterpretation; NaN payload bits are not preserved.

Simd.wax:1093

AsInt64x2method

public fn AsInt64x2() : int64x2

Reinterprets this 128-bit value with the destination lane shape rather than converting numerically. Floating-point NaN lanes are canonicalized on either side of the reinterpretation; NaN payload bits are not preserved.

Simd.wax:1099

AsUint64x2method

public fn AsUint64x2() : uint64x2

Reinterprets this 128-bit value with the destination lane shape rather than converting numerically. Floating-point NaN lanes are canonicalized on either side of the reinterpretation; NaN payload bits are not preserved.

Simd.wax:1105

AsFloat32x4method

public fn AsFloat32x4() : float32x4

Reinterprets this 128-bit value with the destination lane shape rather than converting numerically. Floating-point NaN lanes are canonicalized on either side of the reinterpretation; NaN payload bits are not preserved.

Simd.wax:1111

AsFloat64x2method

public fn AsFloat64x2() : float64x2

Reinterprets this 128-bit value with the destination lane shape rather than converting numerically. Floating-point NaN lanes are canonicalized on either side of the reinterpretation; NaN payload bits are not preserved.

Simd.wax:1117

ToFloat32x4method

public fn ToFloat32x4() : float32x4

Numerically converts all integer lanes to float, rounding values that are not exactly representable.

Simd.wax:1122

ToFloat64x2method

public fn ToFloat64x2() : float64x2

Numerically converts the low two integer lanes to double and discards the high two lanes.

Simd.wax:1126

Loadmethod

public static fn Load(Span<uint8> data, int32 byteOffset) : int32x4

Reads 16 bytes starting at byteOffset as this lane type. The complete range must fit the span or the operation panics. No alignment requirement is imposed.

Simd.wax:1131

LoadAlignedmethod

public static fn LoadAligned(Span<uint8> data, int32 byteOffset) : int32x4

Reads 16 bytes with the same bounds checks and behavior as Load. Alignment is a hint; unaligned addresses are accepted.

Simd.wax:1136

Storemethod

public fn Store(Span<uint8> data, int32 byteOffset) : void

Writes all 16 bytes at byteOffset. The complete range must fit the span or the operation panics. Does not resize or retain the span.

Simd.wax:1141

LoadElemsmethod

public static fn LoadElems(Span<int32> data, int32 elemIndex) : int32x4

Reads 4 consecutive elements starting at elemIndex. The whole element range must fit or the operation panics; indices count elements, not bytes.

Simd.wax:1146

StoreElemsmethod

public fn StoreElems(Span<int32> data, int32 elemIndex) : void

Writes 4 consecutive elements starting at elemIndex. The whole element range must fit or the operation panics; indices count elements, not bytes.

Simd.wax:1151

ToStringmethod

public fn ToString() : string

Provided by the compiler.

ToStringBuffermethod

public fn ToStringBuffer(StringBuilder builder) : int32

Provided by the compiler.