WebAssembly SIMD conversion instructions

WebAssembly SIMD conversion instructions.

Convert between types

convert_low_i32x4_s

Converts the lanes of a v128 f64x2 value interpretation into a signed i32x4 value interpretation.

convert_low_i32x4_u

Converts the lanes of a v128 f64x2 value interpretation into an unsigned i32x4 value interpretation.

convert_i32x4_s

Converts the lanes of a v128 f32x4 value interpretation into a signed i32x4 value interpretation.

convert_i32x4_u

Converts the lanes of a v128 f32x4 value interpretation into an unsigned i32x4 value interpretation.

demote_f64x2_zero

Converts the lanes of a v128 f64x2 value interpretation into an f32x4 value interpretation. The two higher lanes of the result are initialized to zero.

promote_low_f32x4

Converts the first two lanes of a v128 f32x4 value interpretation into an f64x2 value interpretation.

Convert from narrower to wider type

extend_high_i8x16_s

Converts lanes 8–15 of a signed v128 i8x16 value interpretation into an i16x8 value interpretation.

extend_high_i8x16_u

Converts lanes 8–15 of an unsigned v128 i8x16 value interpretation into an i16x8 value interpretation.

extend_high_i16x8_s

Converts lanes 4–7 of a signed v128 i16x8 value interpretation into an i32x4 value interpretation.

extend_high_i16x8_u

Converts lanes 4–7 of an unsigned v128 i16x8 value interpretation into an i32x4 value interpretation.

extend_high_i32x4_s

Converts lanes 2–3 of a signed v128 i32x4 value interpretation into an i64x2 value interpretation.

extend_high_i32x4_u

Converts lanes 2–3 of an unsigned v128 i32x4 value interpretation into an i64x2 value interpretation.

extend_low_i8x16_s

Converts lanes 0–7 of a signed v128 i8x16 value interpretation into an i16x8 value interpretation.

extend_low_i8x16_u

Converts lanes 0–7 of an unsigned v128 i8x16 value interpretation into an i16x8 value interpretation.

extend_low_i16x8_s

Converts lanes 0–3 of a signed v128 i16x8 value interpretation into an i32x4 value interpretation.

extend_low_i16x8_u

Converts lanes 0–3 of an unsigned v128 i16x8 value interpretation into an i32x4 value interpretation.

extend_low_i32x4_s

Converts lanes 0–1 of a signed v128 i32x4 value interpretation into an i64x2 value interpretation.

extend_low_i32x4_u

Converts lanes 0–1 of an unsigned v128 i32x4 value interpretation into an i64x2 value interpretation.

Convert from wider to narrower type

narrow_i16x8_s

Converts two signed v128 i16x8 value interpretations into an i8x16 value interpretation.

narrow_i16x8_u

Converts two signed v128 i16x8 value interpretations into an i8x16 value interpretation using unsigned saturation.

narrow_i32x4_s

Converts two signed v128 i32x4 value interpretations into an i16x8 value interpretation.

narrow_i32x4_u

Converts two signed v128 i32x4 value interpretations into an i16x8 value interpretation using unsigned saturation.

Value replacement

replace_lane

Replaces the specified lane of a v128 value interpretation with a new value and returns the resulting v128 value interpretation.

shuffle

Returns a new v128 value interpretation with its lane values selected from two input v128 values, determined by provided index values.

splat

Copies the same value to all lanes of a v128 value interpretation.

swizzle

Returns a new v128 value interpretation with its lane values selected from an input v128 value, determined by indices provided in a second input v128.

SIMD-specific trunc instructions

trunc_sat_f32x4_s

Performs a saturating conversion of the lanes of a v128 f32x4 value interpretation into a signed i32x4 value interpretation, clamping the output to the range allowed by the value type.

trunc_sat_f32x4_u

Performs a saturating conversion of the lanes of a v128 f32x4 value interpretation into an unsigned i32x4 value interpretation, clamping the output to the range allowed by the value type.

trunc_sat_f64x2_s_zero

Performs a saturating conversion of the lanes of a v128 f64x2 value interpretation into a signed i32x4 value interpretation, clamping the output to the range allowed by the value type. The two higher lanes of the result are initialized to zero.

trunc_sat_f64x2_u_zero

Performs a saturating conversion of the lanes of a v128 f64x2 value interpretation into an unsigned i32x4 value interpretation, clamping the output to the range allowed by the value type. The two higher lanes of the result are initialized to zero.

Note: See also the non-SIMD-specific trunc instruction.