From bf5c9dd73ad48174ad18ea8395c6880112fdded1 Mon Sep 17 00:00:00 2001 From: Tanner Gooding Date: Fri, 24 Jul 2026 07:18:34 -0700 Subject: [PATCH 1/2] Seed doc comments for WASM PackedSimd intrinsics Port the remaining System.Runtime.Intrinsics.Wasm.PackedSimd summaries to match the established Arm/x86 format: the C intrinsic prototype followed by the WASM instruction with its immediate operands and stack transition. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .../Runtime/Intrinsics/Wasm/PackedSimd.cs | 2357 +++++++++++++---- 1 file changed, 1885 insertions(+), 472 deletions(-) diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Wasm/PackedSimd.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Wasm/PackedSimd.cs index 278d8a94a5fc33..7e222208e19a85 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Wasm/PackedSimd.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Wasm/PackedSimd.cs @@ -22,1493 +22,2906 @@ public abstract class PackedSimd // cut (lives somewhere else, use Vector128.Create) // public static Vector128 Constant(ImmByte[16] imm); - /// i8x16.splat or v128.const + /// + /// v128_t wasm_i8x16_splat (int8_t a) + /// i8x16.splat : [i32] -> [v128] + /// [Intrinsic] public static Vector128 Splat(sbyte value) => Splat(value); - /// i8x16.splat or v128.const + /// + /// v128_t wasm_u8x16_splat (uint8_t a) + /// i8x16.splat : [i32] -> [v128] + /// [Intrinsic] public static Vector128 Splat(byte value) => Splat(value); - /// i16x8.splat or v128.const + /// + /// v128_t wasm_i16x8_splat (int16_t a) + /// i16x8.splat : [i32] -> [v128] + /// [Intrinsic] public static Vector128 Splat(short value) => Splat(value); - /// i16x8.splat or v128.const + /// + /// v128_t wasm_u16x8_splat (uint16_t a) + /// i16x8.splat : [i32] -> [v128] + /// [Intrinsic] public static Vector128 Splat(ushort value) => Splat(value); - /// i32x4.splat or v128.const + /// + /// v128_t wasm_i32x4_splat (int32_t a) + /// i32x4.splat : [i32] -> [v128] + /// [Intrinsic] public static Vector128 Splat(int value) => Splat(value); - /// i32x4.splat or v128.const + /// + /// v128_t wasm_u32x4_splat (uint32_t a) + /// i32x4.splat : [i32] -> [v128] + /// [Intrinsic] public static Vector128 Splat(uint value) => Splat(value); - /// i64x2.splat or v128.const + /// + /// v128_t wasm_i64x2_splat (int64_t a) + /// i64x2.splat : [i64] -> [v128] + /// [Intrinsic] public static Vector128 Splat(long value) => Splat(value); - /// i64x2.splat or v128.const + /// + /// v128_t wasm_u64x2_splat (uint64_t a) + /// i64x2.splat : [i64] -> [v128] + /// [Intrinsic] public static Vector128 Splat(ulong value) => Splat(value); - /// f32x4.splat or v128.const + /// + /// v128_t wasm_f32x4_splat (float a) + /// f32x4.splat : [f32] -> [v128] + /// [Intrinsic] public static Vector128 Splat(float value) => Splat(value); - /// f64x2.splat or v128.const + /// + /// v128_t wasm_f64x2_splat (double a) + /// f64x2.splat : [f64] -> [v128] + /// [Intrinsic] public static Vector128 Splat(double value) => Splat(value); - /// i32x4.splat or v128.const + /// + /// v128_t wasm_i32x4_splat (int32_t a) + /// i32x4.splat : [i32] -> [v128] + /// [Intrinsic] public static Vector128 Splat(nint value) => Splat(value); - /// i32x4.splat or v128.const + /// + /// v128_t wasm_u32x4_splat (uint32_t a) + /// i32x4.splat : [i32] -> [v128] + /// [Intrinsic] public static Vector128 Splat(nuint value) => Splat(value); // Accessing lanes - /// i8x16.extract_lane_s + /// + /// int8_t wasm_i8x16_extract_lane (v128_t a, int i) + /// i8x16.extract_lane_s laneidx : [v128] -> [i32] + /// [Intrinsic] public static int ExtractScalar(Vector128 value, [ConstantExpected(Max = (byte)(15))] byte index) => ExtractScalar(value, index); // takes ImmLaneIdx16 - /// i8x16.extract_lane_u + /// + /// uint8_t wasm_u8x16_extract_lane (v128_t a, int i) + /// i8x16.extract_lane_u laneidx : [v128] -> [i32] + /// [Intrinsic] public static uint ExtractScalar(Vector128 value, [ConstantExpected(Max = (byte)(15))] byte index) => ExtractScalar(value, index); // takes ImmLaneIdx16 - /// i16x8.extract_lane_s + /// + /// int16_t wasm_i16x8_extract_lane (v128_t a, int i) + /// i16x8.extract_lane_s laneidx : [v128] -> [i32] + /// [Intrinsic] public static int ExtractScalar(Vector128 value, [ConstantExpected(Max = (byte)(7))] byte index) => ExtractScalar(value, index); // takes ImmLaneIdx8 - /// i16x8.extract_lane_u + /// + /// uint16_t wasm_u16x8_extract_lane (v128_t a, int i) + /// i16x8.extract_lane_u laneidx : [v128] -> [i32] + /// [Intrinsic] public static uint ExtractScalar(Vector128 value, [ConstantExpected(Max = (byte)(7))] byte index) => ExtractScalar(value, index); // takes ImmLaneIdx8 - /// i32x4.extract_lane + /// + /// int32_t wasm_i32x4_extract_lane (v128_t a, int i) + /// i32x4.extract_lane laneidx : [v128] -> [i32] + /// [Intrinsic] public static int ExtractScalar(Vector128 value, [ConstantExpected(Max = (byte)(3))] byte index) => ExtractScalar(value, index); // takes ImmLaneIdx4 - /// i32x4.extract_lane + /// + /// uint32_t wasm_u32x4_extract_lane (v128_t a, int i) + /// i32x4.extract_lane laneidx : [v128] -> [i32] + /// [Intrinsic] public static uint ExtractScalar(Vector128 value, [ConstantExpected(Max = (byte)(3))] byte index) => ExtractScalar(value, index); // takes ImmLaneIdx4 - /// i64x2.extract_lane + /// + /// int64_t wasm_i64x2_extract_lane (v128_t a, int i) + /// i64x2.extract_lane laneidx : [v128] -> [i64] + /// [Intrinsic] public static long ExtractScalar(Vector128 value, [ConstantExpected(Max = (byte)(1))] byte index) => ExtractScalar(value, index); // takes ImmLaneIdx2 - /// i64x2.extract_lane + /// + /// uint64_t wasm_u64x2_extract_lane (v128_t a, int i) + /// i64x2.extract_lane laneidx : [v128] -> [i64] + /// [Intrinsic] public static ulong ExtractScalar(Vector128 value, [ConstantExpected(Max = (byte)(1))] byte index) => ExtractScalar(value, index); // takes ImmLaneIdx2 - /// f32x4.extract_lane + /// + /// float wasm_f32x4_extract_lane (v128_t a, int i) + /// f32x4.extract_lane laneidx : [v128] -> [f32] + /// [Intrinsic] public static float ExtractScalar(Vector128 value, [ConstantExpected(Max = (byte)(3))] byte index) => ExtractScalar(value, index); // takes ImmLaneIdx4 - /// f64x2.extract_lane + /// + /// double wasm_f64x2_extract_lane (v128_t a, int i) + /// f64x2.extract_lane laneidx : [v128] -> [f64] + /// [Intrinsic] public static double ExtractScalar(Vector128 value, [ConstantExpected(Max = (byte)(1))] byte index) => ExtractScalar(value, index); // takes ImmLaneIdx2 - /// i32x4.extract_lane + /// + /// int32_t wasm_i32x4_extract_lane (v128_t a, int i) + /// i32x4.extract_lane laneidx : [v128] -> [i32] + /// [Intrinsic] public static nint ExtractScalar(Vector128 value, [ConstantExpected(Max = (byte)(3))] byte index) => ExtractScalar(value, index); - /// i32x4.extract_lane + /// + /// uint32_t wasm_u32x4_extract_lane (v128_t a, int i) + /// i32x4.extract_lane laneidx : [v128] -> [i32] + /// [Intrinsic] public static nuint ExtractScalar(Vector128 value, [ConstantExpected(Max = (byte)(3))] byte index) => ExtractScalar(value, index); - /// i8x16.replace_lane + /// + /// v128_t wasm_i8x16_replace_lane (v128_t a, int i, int8_t b) + /// i8x16.replace_lane laneidx : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ReplaceScalar(Vector128 vector, [ConstantExpected(Max = (byte)(15))] byte imm, int value) => ReplaceScalar(vector, imm, value); // takes ImmLaneIdx16 - /// i8x16.replace_lane + /// + /// v128_t wasm_u8x16_replace_lane (v128_t a, int i, uint8_t b) + /// i8x16.replace_lane laneidx : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ReplaceScalar(Vector128 vector, [ConstantExpected(Max = (byte)(15))] byte imm, uint value) => ReplaceScalar(vector, imm, value); // takes ImmLaneIdx16 - /// i16x8.replace_lane + /// + /// v128_t wasm_i16x8_replace_lane (v128_t a, int i, int16_t b) + /// i16x8.replace_lane laneidx : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ReplaceScalar(Vector128 vector, [ConstantExpected(Max = (byte)(7))] byte imm, int value) => ReplaceScalar(vector, imm, value); // takes ImmLaneIdx8 - /// i16x8.replace_lane + /// + /// v128_t wasm_u16x8_replace_lane (v128_t a, int i, uint16_t b) + /// i16x8.replace_lane laneidx : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ReplaceScalar(Vector128 vector, [ConstantExpected(Max = (byte)(7))] byte imm, uint value) => ReplaceScalar(vector, imm, value); // takes ImmLaneIdx8 - /// i32x4.replace_lane + /// + /// v128_t wasm_i32x4_replace_lane (v128_t a, int i, int32_t b) + /// i32x4.replace_lane laneidx : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ReplaceScalar(Vector128 vector, [ConstantExpected(Max = (byte)(3))] byte imm, int value) => ReplaceScalar(vector, imm, value); // takes ImmLaneIdx4 - /// i32x4.replace_lane + /// + /// v128_t wasm_i32x4_replace_lane (v128_t a, int i, int32_t b) + /// i32x4.replace_lane laneidx : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ReplaceScalar(Vector128 vector, [ConstantExpected(Max = (byte)(3))] byte imm, uint value) => ReplaceScalar(vector, imm, value); // takes ImmLaneIdx4 - /// i64x2.replace_lane + /// + /// v128_t wasm_i64x2_replace_lane (v128_t a, int i, int64_t b) + /// i64x2.replace_lane laneidx : [v128 i64] -> [v128] + /// [Intrinsic] public static Vector128 ReplaceScalar(Vector128 vector, [ConstantExpected(Max = (byte)(1))] byte imm, long value) => ReplaceScalar(vector, imm, value); // takes ImmLaneIdx2 - /// i64x2.replace_lane + /// + /// v128_t wasm_u64x2_replace_lane (v128_t a, int i, uint64_t b) + /// i64x2.replace_lane laneidx : [v128 i64] -> [v128] + /// [Intrinsic] public static Vector128 ReplaceScalar(Vector128 vector, [ConstantExpected(Max = (byte)(1))] byte imm, ulong value) => ReplaceScalar(vector, imm, value); // takes ImmLaneIdx2 - /// f32x4.replace_lane + /// + /// v128_t wasm_f32x4_replace_lane (v128_t a, int i, float b) + /// f32x4.replace_lane laneidx : [v128 f32] -> [v128] + /// [Intrinsic] public static Vector128 ReplaceScalar(Vector128 vector, [ConstantExpected(Max = (byte)(3))] byte imm, float value) => ReplaceScalar(vector, imm, value); // takes ImmLaneIdx4 - /// f64x2.replace_lane + /// + /// v128_t wasm_f64x2_replace_lane (v128_t a, int i, double b) + /// f64x2.replace_lane laneidx : [v128 f64] -> [v128] + /// [Intrinsic] public static Vector128 ReplaceScalar(Vector128 vector, [ConstantExpected(Max = (byte)(1))] byte imm, double value) => ReplaceScalar(vector, imm, value); // takes ImmLaneIdx2 - /// i32x4.replace_lane + /// + /// v128_t wasm_i32x4_replace_lane (v128_t a, int i, int32_t b) + /// i32x4.replace_lane laneidx : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ReplaceScalar(Vector128 vector, [ConstantExpected(Max = (byte)(3))] byte imm, nint value) => ReplaceScalar(vector, imm, value); - /// i32x4.replace_lane + /// + /// v128_t wasm_u32x4_replace_lane (v128_t a, int i, uint32_t b) + /// i32x4.replace_lane laneidx : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ReplaceScalar(Vector128 vector, [ConstantExpected(Max = (byte)(3))] byte imm, nuint value) => ReplaceScalar(vector, imm, value); - /// i8x16.shuffle + /// + /// v128_t wasm_i8x16_shuffle (v128_t a, v128_t b, int c0, int c1, int c2, int c3, int c4, int c5, int c6, int c7, int c8, int c9, int c10, int c11, int c12, int c13, int c14, int c15) + /// i8x16.shuffle laneidx^16 : [v128 v128] -> [v128] + /// [Intrinsic] internal static Vector128 Shuffle(Vector128 lower, Vector128 upper, Vector128 indices) => Shuffle(lower, upper, indices); - /// i8x16.shuffle + /// + /// v128_t wasm_i8x16_shuffle (v128_t a, v128_t b, int c0, int c1, int c2, int c3, int c4, int c5, int c6, int c7, int c8, int c9, int c10, int c11, int c12, int c13, int c14, int c15) + /// i8x16.shuffle laneidx^16 : [v128 v128] -> [v128] + /// [Intrinsic] internal static Vector128 Shuffle(Vector128 lower, Vector128 upper, Vector128 indices) => Shuffle(lower, upper, indices); - /// i8x16.swizzle + /// + /// v128_t wasm_i8x16_swizzle (v128_t a, v128_t b) + /// i8x16.swizzle : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Swizzle(Vector128 vector, Vector128 indices) => Swizzle(vector, indices); - /// i8x16.swizzle + /// + /// v128_t wasm_i8x16_swizzle (v128_t a, v128_t b) + /// i8x16.swizzle : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Swizzle(Vector128 vector, Vector128 indices) => Swizzle(vector, indices); // Integer arithmetic - /// i8x16.add + /// + /// v128_t wasm_i8x16_add (v128_t a, v128_t b) + /// i8x16.add : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Add(Vector128 left, Vector128 right) => Add(left, right); - /// i8x16.add + /// + /// v128_t wasm_i8x16_add (v128_t a, v128_t b) + /// i8x16.add : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Add(Vector128 left, Vector128 right) => Add(left, right); - /// i16x8.add + /// + /// v128_t wasm_i16x8_add (v128_t a, v128_t b) + /// i16x8.add : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Add(Vector128 left, Vector128 right) => Add(left, right); - /// i16x8.add + /// + /// v128_t wasm_i16x8_add (v128_t a, v128_t b) + /// i16x8.add : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Add(Vector128 left, Vector128 right) => Add(left, right); - /// i32x4.add + /// + /// v128_t wasm_i32x4_add (v128_t a, v128_t b) + /// i32x4.add : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Add(Vector128 left, Vector128 right) => Add(left, right); - /// i32x4.add + /// + /// v128_t wasm_i32x4_add (v128_t a, v128_t b) + /// i32x4.add : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Add(Vector128 left, Vector128 right) => Add(left, right); - /// i64x2.add + /// + /// v128_t wasm_i64x2_add (v128_t a, v128_t b) + /// i64x2.add : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Add(Vector128 left, Vector128 right) => Add(left, right); - /// i64x2.add + /// + /// v128_t wasm_i64x2_add (v128_t a, v128_t b) + /// i64x2.add : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Add(Vector128 left, Vector128 right) => Add(left, right); - /// i32x4.add + /// + /// v128_t wasm_i32x4_add (v128_t a, v128_t b) + /// i32x4.add : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Add(Vector128 left, Vector128 right) => Add(left, right); - /// i32x4.add + /// + /// v128_t wasm_i32x4_add (v128_t a, v128_t b) + /// i32x4.add : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Add(Vector128 left, Vector128 right) => Add(left, right); - /// i8x16.sub + /// + /// v128_t wasm_i8x16_sub (v128_t a, v128_t b) + /// i8x16.sub : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Subtract(Vector128 left, Vector128 right) => Subtract(left, right); - /// i8x16.sub + /// + /// v128_t wasm_i8x16_sub (v128_t a, v128_t b) + /// i8x16.sub : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Subtract(Vector128 left, Vector128 right) => Subtract(left, right); - /// i16x8.sub + /// + /// v128_t wasm_i16x8_sub (v128_t a, v128_t b) + /// i16x8.sub : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Subtract(Vector128 left, Vector128 right) => Subtract(left, right); - /// i16x8.sub + /// + /// v128_t wasm_i16x8_sub (v128_t a, v128_t b) + /// i16x8.sub : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Subtract(Vector128 left, Vector128 right) => Subtract(left, right); - /// i32x4.sub + /// + /// v128_t wasm_i32x4_sub (v128_t a, v128_t b) + /// i32x4.sub : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Subtract(Vector128 left, Vector128 right) => Subtract(left, right); - /// i32x4.sub + /// + /// v128_t wasm_i32x4_sub (v128_t a, v128_t b) + /// i32x4.sub : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Subtract(Vector128 left, Vector128 right) => Subtract(left, right); - /// i64x2.sub + /// + /// v128_t wasm_i64x2_sub (v128_t a, v128_t b) + /// i64x2.sub : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Subtract(Vector128 left, Vector128 right) => Subtract(left, right); - /// i64x2.sub + /// + /// v128_t wasm_i64x2_sub (v128_t a, v128_t b) + /// i64x2.sub : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Subtract(Vector128 left, Vector128 right) => Subtract(left, right); - /// i32x4.sub + /// + /// v128_t wasm_i32x4_sub (v128_t a, v128_t b) + /// i32x4.sub : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Subtract(Vector128 left, Vector128 right) => Subtract(left, right); - /// i32x4.sub + /// + /// v128_t wasm_i32x4_sub (v128_t a, v128_t b) + /// i32x4.sub : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Subtract(Vector128 left, Vector128 right) => Subtract(left, right); - /// i16x8.mul + /// + /// v128_t wasm_i16x8_mul (v128_t a, v128_t b) + /// i16x8.mul : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Multiply(Vector128 left, Vector128 right) => Multiply(left, right); - /// i16x8.mul + /// + /// v128_t wasm_i16x8_mul (v128_t a, v128_t b) + /// i16x8.mul : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Multiply(Vector128 left, Vector128 right) => Multiply(left, right); - /// i32x4.mul + /// + /// v128_t wasm_i32x4_mul (v128_t a, v128_t b) + /// i32x4.mul : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Multiply(Vector128 left, Vector128 right) => Multiply(left, right); - /// i32x4.mul + /// + /// v128_t wasm_i32x4_mul (v128_t a, v128_t b) + /// i32x4.mul : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Multiply(Vector128 left, Vector128 right) => Multiply(left, right); - /// i64x2.mul + /// + /// v128_t wasm_i64x2_mul (v128_t a, v128_t b) + /// i64x2.mul : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Multiply(Vector128 left, Vector128 right) => Multiply(left, right); - /// i64x2.mul + /// + /// v128_t wasm_i64x2_mul (v128_t a, v128_t b) + /// i64x2.mul : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Multiply(Vector128 left, Vector128 right) => Multiply(left, right); - /// i32x4.mul + /// + /// v128_t wasm_i32x4_mul (v128_t a, v128_t b) + /// i32x4.mul : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Multiply(Vector128 left, Vector128 right) => Multiply(left, right); - /// i32x4.mul + /// + /// v128_t wasm_i32x4_mul (v128_t a, v128_t b) + /// i32x4.mul : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Multiply(Vector128 left, Vector128 right) => Multiply(left, right); - /// i32x4.dot_i16x8_s + /// + /// v128_t wasm_i32x4_dot_i16x8 (v128_t a, v128_t b) + /// i32x4.dot_i16x8_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Dot(Vector128 left, Vector128 right) => Dot(left, right); - /// i8x16.neg + /// + /// v128_t wasm_i8x16_neg (v128_t a) + /// i8x16.neg : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Negate(Vector128 value) => Negate(value); - /// i8x16.neg + /// + /// v128_t wasm_i8x16_neg (v128_t a) + /// i8x16.neg : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Negate(Vector128 value) => Negate(value); - /// i16x8.neg + /// + /// v128_t wasm_i16x8_neg (v128_t a) + /// i16x8.neg : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Negate(Vector128 value) => Negate(value); - /// i16x8.neg + /// + /// v128_t wasm_i16x8_neg (v128_t a) + /// i16x8.neg : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Negate(Vector128 value) => Negate(value); - /// i32x4.neg + /// + /// v128_t wasm_i32x4_neg (v128_t a) + /// i32x4.neg : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Negate(Vector128 value) => Negate(value); - /// i32x4.neg + /// + /// v128_t wasm_i32x4_neg (v128_t a) + /// i32x4.neg : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Negate(Vector128 value) => Negate(value); - /// i64x2.neg + /// + /// v128_t wasm_i64x2_neg (v128_t a) + /// i64x2.neg : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Negate(Vector128 value) => Negate(value); - /// i64x2.neg + /// + /// v128_t wasm_i64x2_neg (v128_t a) + /// i64x2.neg : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Negate(Vector128 value) => Negate(value); - /// i32x4.neg + /// + /// v128_t wasm_i32x4_neg (v128_t a) + /// i32x4.neg : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Negate(Vector128 value) => Negate(value); - /// i32x4.neg + /// + /// v128_t wasm_i32x4_neg (v128_t a) + /// i32x4.neg : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Negate(Vector128 value) => Negate(value); // Extended integer arithmetic - /// i16x8.extmul_low_i8x16_s + /// + /// v128_t wasm_i16x8_extmul_low_i8x16 (v128_t a, v128_t b) + /// i16x8.extmul_low_i8x16_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 MultiplyWideningLower(Vector128 left, Vector128 right) => MultiplyWideningLower(left, right); - /// i16x8.extmul_low_i8x16_u + /// + /// v128_t wasm_u16x8_extmul_low_u8x16 (v128_t a, v128_t b) + /// i16x8.extmul_low_i8x16_u : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 MultiplyWideningLower(Vector128 left, Vector128 right) => MultiplyWideningLower(left, right); - /// i32x4.extmul_low_i16x8_s + /// + /// v128_t wasm_i32x4_extmul_low_i16x8 (v128_t a, v128_t b) + /// i32x4.extmul_low_i16x8_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 MultiplyWideningLower(Vector128 left, Vector128 right) => MultiplyWideningLower(left, right); - /// i32x4.extmul_low_i16x8_u + /// + /// v128_t wasm_u32x4_extmul_low_u16x8 (v128_t a, v128_t b) + /// i32x4.extmul_low_i16x8_u : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 MultiplyWideningLower(Vector128 left, Vector128 right) => MultiplyWideningLower(left, right); - /// i64x2.extmul_low_i32x4_s + /// + /// v128_t wasm_i64x2_extmul_low_i32x4 (v128_t a, v128_t b) + /// i64x2.extmul_low_i32x4_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 MultiplyWideningLower(Vector128 left, Vector128 right) => MultiplyWideningLower(left, right); - /// i64x2.extmul_low_i32x4_u + /// + /// v128_t wasm_u64x2_extmul_low_u32x4 (v128_t a, v128_t b) + /// i64x2.extmul_low_i32x4_u : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 MultiplyWideningLower(Vector128 left, Vector128 right) => MultiplyWideningLower(left, right); - /// i16x8.extmul_high_i8x16_s + /// + /// v128_t wasm_i16x8_extmul_high_i8x16 (v128_t a, v128_t b) + /// i16x8.extmul_high_i8x16_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 MultiplyWideningUpper(Vector128 left, Vector128 right) => MultiplyWideningUpper(left, right); - /// i16x8.extmul_high_i8x16_u + /// + /// v128_t wasm_u16x8_extmul_high_u8x16 (v128_t a, v128_t b) + /// i16x8.extmul_high_i8x16_u : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 MultiplyWideningUpper(Vector128 left, Vector128 right) => MultiplyWideningUpper(left, right); - /// i32x4.extmul_high_i16x8_s + /// + /// v128_t wasm_i32x4_extmul_high_i16x8 (v128_t a, v128_t b) + /// i32x4.extmul_high_i16x8_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 MultiplyWideningUpper(Vector128 left, Vector128 right) => MultiplyWideningUpper(left, right); - /// i32x4.extmul_high_i16x8_u + /// + /// v128_t wasm_u32x4_extmul_high_u16x8 (v128_t a, v128_t b) + /// i32x4.extmul_high_i16x8_u : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 MultiplyWideningUpper(Vector128 left, Vector128 right) => MultiplyWideningUpper(left, right); - /// i64x2.extmul_high_i32x4_s + /// + /// v128_t wasm_i64x2_extmul_high_i32x4 (v128_t a, v128_t b) + /// i64x2.extmul_high_i32x4_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 MultiplyWideningUpper(Vector128 left, Vector128 right) => MultiplyWideningUpper(left, right); - /// i64x2.extmul_high_i32x4_u + /// + /// v128_t wasm_u64x2_extmul_high_u32x4 (v128_t a, v128_t b) + /// i64x2.extmul_high_i32x4_u : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 MultiplyWideningUpper(Vector128 left, Vector128 right) => MultiplyWideningUpper(left, right); - /// i16x8.extadd_pairwise_i8x16_s + /// + /// v128_t wasm_i16x8_extadd_pairwise_i8x16 (v128_t a) + /// i16x8.extadd_pairwise_i8x16_s : [v128] -> [v128] + /// [Intrinsic] public static Vector128 AddPairwiseWidening(Vector128 value) => AddPairwiseWidening(value); - /// i16x8.extadd_pairwise_i8x16_u + /// + /// v128_t wasm_u16x8_extadd_pairwise_u8x16 (v128_t a) + /// i16x8.extadd_pairwise_i8x16_u : [v128] -> [v128] + /// [Intrinsic] public static Vector128 AddPairwiseWidening(Vector128 value) => AddPairwiseWidening(value); - /// i32x4.extadd_pairwise_i16x8_s + /// + /// v128_t wasm_i32x4_extadd_pairwise_i16x8 (v128_t a) + /// i32x4.extadd_pairwise_i16x8_s : [v128] -> [v128] + /// [Intrinsic] public static Vector128 AddPairwiseWidening(Vector128 value) => AddPairwiseWidening(value); - /// i32x4.extadd_pairwise_i16x8_u + /// + /// v128_t wasm_u32x4_extadd_pairwise_u16x8 (v128_t a) + /// i32x4.extadd_pairwise_i16x8_u : [v128] -> [v128] + /// [Intrinsic] public static Vector128 AddPairwiseWidening(Vector128 value) => AddPairwiseWidening(value); // Saturating integer arithmetic - /// i8x16.add.sat.s + /// + /// v128_t wasm_i8x16_add_sat (v128_t a, v128_t b) + /// i8x16.add_sat_s : [v128 v128] -> [v128] + /// public static Vector128 AddSaturate(Vector128 left, Vector128 right) => AddSaturate(left, right); - /// i8x16.add.sat.u + /// + /// v128_t wasm_u8x16_add_sat (v128_t a, v128_t b) + /// i8x16.add_sat_u : [v128 v128] -> [v128] + /// public static Vector128 AddSaturate(Vector128 left, Vector128 right) => AddSaturate(left, right); - /// i16x8.add.sat.s + /// + /// v128_t wasm_i16x8_add_sat (v128_t a, v128_t b) + /// i16x8.add_sat_s : [v128 v128] -> [v128] + /// public static Vector128 AddSaturate(Vector128 left, Vector128 right) => AddSaturate(left, right); - /// i16x8.add.sat.u + /// + /// v128_t wasm_u16x8_add_sat (v128_t a, v128_t b) + /// i16x8.add_sat_u : [v128 v128] -> [v128] + /// public static Vector128 AddSaturate(Vector128 left, Vector128 right) => AddSaturate(left, right); - /// i8x16.sub.sat.s + /// + /// v128_t wasm_i8x16_sub_sat (v128_t a, v128_t b) + /// i8x16.sub_sat_s : [v128 v128] -> [v128] + /// public static Vector128 SubtractSaturate(Vector128 left, Vector128 right) => SubtractSaturate(left, right); - /// i8x16.sub.sat.u + /// + /// v128_t wasm_u8x16_sub_sat (v128_t a, v128_t b) + /// i8x16.sub_sat_u : [v128 v128] -> [v128] + /// public static Vector128 SubtractSaturate(Vector128 left, Vector128 right) => SubtractSaturate(left, right); - /// i16x8.sub.sat.s + /// + /// v128_t wasm_i16x8_sub_sat (v128_t a, v128_t b) + /// i16x8.sub_sat_s : [v128 v128] -> [v128] + /// public static Vector128 SubtractSaturate(Vector128 left, Vector128 right) => SubtractSaturate(left, right); - /// i16x8.sub.sat.u + /// + /// v128_t wasm_u16x8_sub_sat (v128_t a, v128_t b) + /// i16x8.sub_sat_u : [v128 v128] -> [v128] + /// public static Vector128 SubtractSaturate(Vector128 left, Vector128 right) => SubtractSaturate(left, right); - /// i16x8.q15mulr.sat.s + /// + /// v128_t wasm_i16x8_q15mulr_sat (v128_t a, v128_t b) + /// i16x8.q15mulr_sat_s : [v128 v128] -> [v128] + /// public static Vector128 MultiplyRoundedSaturateQ15(Vector128 left, Vector128 right) => MultiplyRoundedSaturateQ15(left, right); - /// i8x16.min.s + /// + /// v128_t wasm_i8x16_min (v128_t a, v128_t b) + /// i8x16.min_s : [v128 v128] -> [v128] + /// public static Vector128 Min(Vector128 left, Vector128 right) => Min(left, right); - /// i8x16.min.u + /// + /// v128_t wasm_u8x16_min (v128_t a, v128_t b) + /// i8x16.min_u : [v128 v128] -> [v128] + /// public static Vector128 Min(Vector128 left, Vector128 right) => Min(left, right); - /// i16x8.min.s + /// + /// v128_t wasm_i16x8_min (v128_t a, v128_t b) + /// i16x8.min_s : [v128 v128] -> [v128] + /// public static Vector128 Min(Vector128 left, Vector128 right) => Min(left, right); - /// i16x8.min.u + /// + /// v128_t wasm_u16x8_min (v128_t a, v128_t b) + /// i16x8.min_u : [v128 v128] -> [v128] + /// public static Vector128 Min(Vector128 left, Vector128 right) => Min(left, right); - /// i32x4.min.s + /// + /// v128_t wasm_i32x4_min (v128_t a, v128_t b) + /// i32x4.min_s : [v128 v128] -> [v128] + /// public static Vector128 Min(Vector128 left, Vector128 right) => Min(left, right); - /// i32x4.min.u + /// + /// v128_t wasm_u32x4_min (v128_t a, v128_t b) + /// i32x4.min_u : [v128 v128] -> [v128] + /// public static Vector128 Min(Vector128 left, Vector128 right) => Min(left, right); - /// i8x16.max.s + /// + /// v128_t wasm_i8x16_max (v128_t a, v128_t b) + /// i8x16.max_s : [v128 v128] -> [v128] + /// public static Vector128 Max(Vector128 left, Vector128 right) => Max(left, right); - /// i8x16.max.u + /// + /// v128_t wasm_u8x16_max (v128_t a, v128_t b) + /// i8x16.max_u : [v128 v128] -> [v128] + /// public static Vector128 Max(Vector128 left, Vector128 right) => Max(left, right); - /// i16x8.max.s + /// + /// v128_t wasm_i16x8_max (v128_t a, v128_t b) + /// i16x8.max_s : [v128 v128] -> [v128] + /// public static Vector128 Max(Vector128 left, Vector128 right) => Max(left, right); - /// i16x8.max.u + /// + /// v128_t wasm_u16x8_max (v128_t a, v128_t b) + /// i16x8.max_u : [v128 v128] -> [v128] + /// public static Vector128 Max(Vector128 left, Vector128 right) => Max(left, right); - /// i32x4.max.s + /// + /// v128_t wasm_i32x4_max (v128_t a, v128_t b) + /// i32x4.max_s : [v128 v128] -> [v128] + /// public static Vector128 Max(Vector128 left, Vector128 right) => Max(left, right); - /// i32x4.max.u + /// + /// v128_t wasm_u32x4_max (v128_t a, v128_t b) + /// i32x4.max_u : [v128 v128] -> [v128] + /// public static Vector128 Max(Vector128 left, Vector128 right) => Max(left, right); - /// i8x16.avgr.u + /// + /// v128_t wasm_u8x16_avgr (v128_t a, v128_t b) + /// i8x16.avgr_u : [v128 v128] -> [v128] + /// public static Vector128 AverageRounded(Vector128 left, Vector128 right) => AverageRounded(left, right); - /// i16x8.avgr.u + /// + /// v128_t wasm_u16x8_avgr (v128_t a, v128_t b) + /// i16x8.avgr_u : [v128 v128] -> [v128] + /// public static Vector128 AverageRounded(Vector128 left, Vector128 right) => AverageRounded(left, right); - /// i8x16.abs + /// + /// v128_t wasm_i8x16_abs (v128_t a) + /// i8x16.abs : [v128] -> [v128] + /// public static Vector128 Abs(Vector128 value) => Abs(value); - /// i16x8.abs + /// + /// v128_t wasm_i16x8_abs (v128_t a) + /// i16x8.abs : [v128] -> [v128] + /// public static Vector128 Abs(Vector128 value) => Abs(value); - /// i32x4.abs + /// + /// v128_t wasm_i32x4_abs (v128_t a) + /// i32x4.abs : [v128] -> [v128] + /// public static Vector128 Abs(Vector128 value) => Abs(value); - /// i64x2.abs + /// + /// v128_t wasm_i64x2_abs (v128_t a) + /// i64x2.abs : [v128] -> [v128] + /// public static Vector128 Abs(Vector128 value) => Abs(value); - /// i32x4.abs + /// + /// v128_t wasm_i32x4_abs (v128_t a) + /// i32x4.abs : [v128] -> [v128] + /// public static Vector128 Abs(Vector128 value) => Abs(value); // Bit shifts - /// i8x16.shl + /// + /// v128_t wasm_i8x16_shl (v128_t a, uint32_t b) + /// i8x16.shl : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftLeft(Vector128 value, int count) => ShiftLeft(value, count); - /// i8x16.shl + /// + /// v128_t wasm_i8x16_shl (v128_t a, uint32_t b) + /// i8x16.shl : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftLeft(Vector128 value, int count) => ShiftLeft(value, count); - /// i16x8.shl + /// + /// v128_t wasm_i16x8_shl (v128_t a, uint32_t b) + /// i16x8.shl : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftLeft(Vector128 value, int count) => ShiftLeft(value, count); - /// i16x8.shl + /// + /// v128_t wasm_i16x8_shl (v128_t a, uint32_t b) + /// i16x8.shl : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftLeft(Vector128 value, int count) => ShiftLeft(value, count); - /// i32x4.shl + /// + /// v128_t wasm_i32x4_shl (v128_t a, uint32_t b) + /// i32x4.shl : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftLeft(Vector128 value, int count) => ShiftLeft(value, count); - /// i32x4.shl + /// + /// v128_t wasm_i32x4_shl (v128_t a, uint32_t b) + /// i32x4.shl : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftLeft(Vector128 value, int count) => ShiftLeft(value, count); - /// i64x2.shl + /// + /// v128_t wasm_i64x2_shl (v128_t a, uint32_t b) + /// i64x2.shl : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftLeft(Vector128 value, int count) => ShiftLeft(value, count); - /// i64x2.shl + /// + /// v128_t wasm_i64x2_shl (v128_t a, uint32_t b) + /// i64x2.shl : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftLeft(Vector128 value, int count) => ShiftLeft(value, count); - /// i32x4.shl + /// + /// v128_t wasm_i32x4_shl (v128_t a, uint32_t b) + /// i32x4.shl : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftLeft(Vector128 value, int count) => ShiftLeft(value, count); - /// i32x4.shl + /// + /// v128_t wasm_i32x4_shl (v128_t a, uint32_t b) + /// i32x4.shl : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftLeft(Vector128 value, int count) => ShiftLeft(value, count); - /// i8x16.shr_s + /// + /// v128_t wasm_i8x16_shr (v128_t a, uint32_t b) + /// i8x16.shr_s : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftRightArithmetic(Vector128 value, int count) => ShiftRightArithmetic(value, count); - /// i8x16.shr_s + /// + /// v128_t wasm_i8x16_shr (v128_t a, uint32_t b) + /// i8x16.shr_s : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftRightArithmetic(Vector128 value, int count) => ShiftRightArithmetic(value, count); - /// i16x8.shr_s + /// + /// v128_t wasm_i16x8_shr (v128_t a, uint32_t b) + /// i16x8.shr_s : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftRightArithmetic(Vector128 value, int count) => ShiftRightArithmetic(value, count); - /// i16x8.shr_s + /// + /// v128_t wasm_i16x8_shr (v128_t a, uint32_t b) + /// i16x8.shr_s : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftRightArithmetic(Vector128 value, int count) => ShiftRightArithmetic(value, count); - /// i32x4.shr_s + /// + /// v128_t wasm_i32x4_shr (v128_t a, uint32_t b) + /// i32x4.shr_s : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftRightArithmetic(Vector128 value, int count) => ShiftRightArithmetic(value, count); - /// i32x4.shr_s + /// + /// v128_t wasm_i32x4_shr (v128_t a, uint32_t b) + /// i32x4.shr_s : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftRightArithmetic(Vector128 value, int count) => ShiftRightArithmetic(value, count); - /// i64x2.shr_s + /// + /// v128_t wasm_i64x2_shr (v128_t a, uint32_t b) + /// i64x2.shr_s : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftRightArithmetic(Vector128 value, int count) => ShiftRightArithmetic(value, count); - /// i64x2.shr_s + /// + /// v128_t wasm_i64x2_shr (v128_t a, uint32_t b) + /// i64x2.shr_s : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftRightArithmetic(Vector128 value, int count) => ShiftRightArithmetic(value, count); - /// i32x4.shr_s + /// + /// v128_t wasm_i32x4_shr (v128_t a, uint32_t b) + /// i32x4.shr_s : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftRightArithmetic(Vector128 value, int count) => ShiftRightArithmetic(value, count); - /// i32x4.shr_s + /// + /// v128_t wasm_i32x4_shr (v128_t a, uint32_t b) + /// i32x4.shr_s : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftRightArithmetic(Vector128 value, int count) => ShiftRightArithmetic(value, count); - /// i8x16.shr_u + /// + /// v128_t wasm_u8x16_shr (v128_t a, uint32_t b) + /// i8x16.shr_u : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftRightLogical(Vector128 value, int count) => ShiftRightLogical(value, count); - /// i8x16.shr_u + /// + /// v128_t wasm_u8x16_shr (v128_t a, uint32_t b) + /// i8x16.shr_u : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftRightLogical(Vector128 value, int count) => ShiftRightLogical(value, count); - /// i16x8.shr_u + /// + /// v128_t wasm_u16x8_shr (v128_t a, uint32_t b) + /// i16x8.shr_u : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftRightLogical(Vector128 value, int count) => ShiftRightLogical(value, count); - /// i16x8.shr_u + /// + /// v128_t wasm_u16x8_shr (v128_t a, uint32_t b) + /// i16x8.shr_u : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftRightLogical(Vector128 value, int count) => ShiftRightLogical(value, count); - /// i32x4.shr_u + /// + /// v128_t wasm_u32x4_shr (v128_t a, uint32_t b) + /// i32x4.shr_u : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftRightLogical(Vector128 value, int count) => ShiftRightLogical(value, count); - /// i32x4.shr_u + /// + /// v128_t wasm_u32x4_shr (v128_t a, uint32_t b) + /// i32x4.shr_u : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftRightLogical(Vector128 value, int count) => ShiftRightLogical(value, count); - /// i64x2.shr_u + /// + /// v128_t wasm_u64x2_shr (v128_t a, uint32_t b) + /// i64x2.shr_u : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftRightLogical(Vector128 value, int count) => ShiftRightLogical(value, count); - /// i64x2.shr_u + /// + /// v128_t wasm_u64x2_shr (v128_t a, uint32_t b) + /// i64x2.shr_u : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftRightLogical(Vector128 value, int count) => ShiftRightLogical(value, count); - /// i32x4.shr_u + /// + /// v128_t wasm_u32x4_shr (v128_t a, uint32_t b) + /// i32x4.shr_u : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftRightLogical(Vector128 value, int count) => ShiftRightLogical(value, count); - /// i32x4.shr_u + /// + /// v128_t wasm_u32x4_shr (v128_t a, uint32_t b) + /// i32x4.shr_u : [v128 i32] -> [v128] + /// [Intrinsic] public static Vector128 ShiftRightLogical(Vector128 value, int count) => ShiftRightLogical(value, count); // Bitwise operations - /// v128.and + /// + /// v128_t wasm_v128_and (v128_t a, v128_t b) + /// v128.and : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 And(Vector128 left, Vector128 right) => And(left, right); - /// v128.and + /// + /// v128_t wasm_v128_and (v128_t a, v128_t b) + /// v128.and : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 And(Vector128 left, Vector128 right) => And(left, right); - /// v128.and + /// + /// v128_t wasm_v128_and (v128_t a, v128_t b) + /// v128.and : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 And(Vector128 left, Vector128 right) => And(left, right); - /// v128.and + /// + /// v128_t wasm_v128_and (v128_t a, v128_t b) + /// v128.and : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 And(Vector128 left, Vector128 right) => And(left, right); - /// v128.and + /// + /// v128_t wasm_v128_and (v128_t a, v128_t b) + /// v128.and : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 And(Vector128 left, Vector128 right) => And(left, right); - /// v128.and + /// + /// v128_t wasm_v128_and (v128_t a, v128_t b) + /// v128.and : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 And(Vector128 left, Vector128 right) => And(left, right); - /// v128.and + /// + /// v128_t wasm_v128_and (v128_t a, v128_t b) + /// v128.and : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 And(Vector128 left, Vector128 right) => And(left, right); - /// v128.and + /// + /// v128_t wasm_v128_and (v128_t a, v128_t b) + /// v128.and : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 And(Vector128 left, Vector128 right) => And(left, right); - /// v128.and + /// + /// v128_t wasm_v128_and (v128_t a, v128_t b) + /// v128.and : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 And(Vector128 left, Vector128 right) => And(left, right); - /// v128.and + /// + /// v128_t wasm_v128_and (v128_t a, v128_t b) + /// v128.and : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 And(Vector128 left, Vector128 right) => And(left, right); - /// v128.and + /// + /// v128_t wasm_v128_and (v128_t a, v128_t b) + /// v128.and : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 And(Vector128 left, Vector128 right) => And(left, right); - /// v128.and + /// + /// v128_t wasm_v128_and (v128_t a, v128_t b) + /// v128.and : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 And(Vector128 left, Vector128 right) => And(left, right); - /// v128.or + /// + /// v128_t wasm_v128_or (v128_t a, v128_t b) + /// v128.or : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Or(Vector128 left, Vector128 right) => Or(left, right); - /// v128.or + /// + /// v128_t wasm_v128_or (v128_t a, v128_t b) + /// v128.or : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Or(Vector128 left, Vector128 right) => Or(left, right); - /// v128.or + /// + /// v128_t wasm_v128_or (v128_t a, v128_t b) + /// v128.or : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Or(Vector128 left, Vector128 right) => Or(left, right); - /// v128.or + /// + /// v128_t wasm_v128_or (v128_t a, v128_t b) + /// v128.or : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Or(Vector128 left, Vector128 right) => Or(left, right); - /// v128.or + /// + /// v128_t wasm_v128_or (v128_t a, v128_t b) + /// v128.or : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Or(Vector128 left, Vector128 right) => Or(left, right); - /// v128.or + /// + /// v128_t wasm_v128_or (v128_t a, v128_t b) + /// v128.or : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Or(Vector128 left, Vector128 right) => Or(left, right); - /// v128.or + /// + /// v128_t wasm_v128_or (v128_t a, v128_t b) + /// v128.or : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Or(Vector128 left, Vector128 right) => Or(left, right); - /// v128.or + /// + /// v128_t wasm_v128_or (v128_t a, v128_t b) + /// v128.or : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Or(Vector128 left, Vector128 right) => Or(left, right); - /// v128.or + /// + /// v128_t wasm_v128_or (v128_t a, v128_t b) + /// v128.or : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Or(Vector128 left, Vector128 right) => Or(left, right); - /// v128.or + /// + /// v128_t wasm_v128_or (v128_t a, v128_t b) + /// v128.or : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Or(Vector128 left, Vector128 right) => Or(left, right); - /// v128.or + /// + /// v128_t wasm_v128_or (v128_t a, v128_t b) + /// v128.or : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Or(Vector128 left, Vector128 right) => Or(left, right); - /// v128.or + /// + /// v128_t wasm_v128_or (v128_t a, v128_t b) + /// v128.or : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Or(Vector128 left, Vector128 right) => Or(left, right); - /// v128.xor + /// + /// v128_t wasm_v128_xor (v128_t a, v128_t b) + /// v128.xor : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Xor(Vector128 left, Vector128 right) => Xor(left, right); - /// v128.xor + /// + /// v128_t wasm_v128_xor (v128_t a, v128_t b) + /// v128.xor : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Xor(Vector128 left, Vector128 right) => Xor(left, right); - /// v128.xor + /// + /// v128_t wasm_v128_xor (v128_t a, v128_t b) + /// v128.xor : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Xor(Vector128 left, Vector128 right) => Xor(left, right); - /// v128.xor + /// + /// v128_t wasm_v128_xor (v128_t a, v128_t b) + /// v128.xor : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Xor(Vector128 left, Vector128 right) => Xor(left, right); - /// v128.xor + /// + /// v128_t wasm_v128_xor (v128_t a, v128_t b) + /// v128.xor : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Xor(Vector128 left, Vector128 right) => Xor(left, right); - /// v128.xor + /// + /// v128_t wasm_v128_xor (v128_t a, v128_t b) + /// v128.xor : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Xor(Vector128 left, Vector128 right) => Xor(left, right); - /// v128.xor + /// + /// v128_t wasm_v128_xor (v128_t a, v128_t b) + /// v128.xor : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Xor(Vector128 left, Vector128 right) => Xor(left, right); - /// v128.xor + /// + /// v128_t wasm_v128_xor (v128_t a, v128_t b) + /// v128.xor : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Xor(Vector128 left, Vector128 right) => Xor(left, right); - /// v128.xor + /// + /// v128_t wasm_v128_xor (v128_t a, v128_t b) + /// v128.xor : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Xor(Vector128 left, Vector128 right) => Xor(left, right); - /// v128.xor + /// + /// v128_t wasm_v128_xor (v128_t a, v128_t b) + /// v128.xor : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Xor(Vector128 left, Vector128 right) => Xor(left, right); - /// v128.xor + /// + /// v128_t wasm_v128_xor (v128_t a, v128_t b) + /// v128.xor : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Xor(Vector128 left, Vector128 right) => Xor(left, right); - /// v128.xor + /// + /// v128_t wasm_v128_xor (v128_t a, v128_t b) + /// v128.xor : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Xor(Vector128 left, Vector128 right) => Xor(left, right); - /// v128.not + /// + /// v128_t wasm_v128_not (v128_t a) + /// v128.not : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Not(Vector128 value) => Not(value); - /// v128.not + /// + /// v128_t wasm_v128_not (v128_t a) + /// v128.not : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Not(Vector128 value) => Not(value); - /// v128.not + /// + /// v128_t wasm_v128_not (v128_t a) + /// v128.not : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Not(Vector128 value) => Not(value); - /// v128.not + /// + /// v128_t wasm_v128_not (v128_t a) + /// v128.not : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Not(Vector128 value) => Not(value); - /// v128.not + /// + /// v128_t wasm_v128_not (v128_t a) + /// v128.not : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Not(Vector128 value) => Not(value); - /// v128.not + /// + /// v128_t wasm_v128_not (v128_t a) + /// v128.not : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Not(Vector128 value) => Not(value); - /// v128.not + /// + /// v128_t wasm_v128_not (v128_t a) + /// v128.not : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Not(Vector128 value) => Not(value); - /// v128.not + /// + /// v128_t wasm_v128_not (v128_t a) + /// v128.not : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Not(Vector128 value) => Not(value); - /// v128.not + /// + /// v128_t wasm_v128_not (v128_t a) + /// v128.not : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Not(Vector128 value) => Not(value); - /// v128.not + /// + /// v128_t wasm_v128_not (v128_t a) + /// v128.not : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Not(Vector128 value) => Not(value); - /// v128.not + /// + /// v128_t wasm_v128_not (v128_t a) + /// v128.not : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Not(Vector128 value) => Not(value); - /// v128.not + /// + /// v128_t wasm_v128_not (v128_t a) + /// v128.not : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Not(Vector128 value) => Not(value); - /// v128.andnot + /// + /// v128_t wasm_v128_andnot (v128_t a, v128_t b) + /// v128.andnot : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 AndNot(Vector128 left, Vector128 right) => AndNot(left, right); - /// v128.andnot + /// + /// v128_t wasm_v128_andnot (v128_t a, v128_t b) + /// v128.andnot : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 AndNot(Vector128 left, Vector128 right) => AndNot(left, right); - /// v128.andnot + /// + /// v128_t wasm_v128_andnot (v128_t a, v128_t b) + /// v128.andnot : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 AndNot(Vector128 left, Vector128 right) => AndNot(left, right); - /// v128.andnot + /// + /// v128_t wasm_v128_andnot (v128_t a, v128_t b) + /// v128.andnot : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 AndNot(Vector128 left, Vector128 right) => AndNot(left, right); - /// v128.andnot + /// + /// v128_t wasm_v128_andnot (v128_t a, v128_t b) + /// v128.andnot : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 AndNot(Vector128 left, Vector128 right) => AndNot(left, right); - /// v128.andnot + /// + /// v128_t wasm_v128_andnot (v128_t a, v128_t b) + /// v128.andnot : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 AndNot(Vector128 left, Vector128 right) => AndNot(left, right); - /// v128.andnot + /// + /// v128_t wasm_v128_andnot (v128_t a, v128_t b) + /// v128.andnot : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 AndNot(Vector128 left, Vector128 right) => AndNot(left, right); - /// v128.andnot + /// + /// v128_t wasm_v128_andnot (v128_t a, v128_t b) + /// v128.andnot : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 AndNot(Vector128 left, Vector128 right) => AndNot(left, right); - /// v128.andnot + /// + /// v128_t wasm_v128_andnot (v128_t a, v128_t b) + /// v128.andnot : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 AndNot(Vector128 left, Vector128 right) => AndNot(left, right); - /// v128.andnot + /// + /// v128_t wasm_v128_andnot (v128_t a, v128_t b) + /// v128.andnot : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 AndNot(Vector128 left, Vector128 right) => AndNot(left, right); - /// v128.andnot + /// + /// v128_t wasm_v128_andnot (v128_t a, v128_t b) + /// v128.andnot : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 AndNot(Vector128 left, Vector128 right) => AndNot(left, right); - /// v128.andnot + /// + /// v128_t wasm_v128_andnot (v128_t a, v128_t b) + /// v128.andnot : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 AndNot(Vector128 left, Vector128 right) => AndNot(left, right); - /// v128.bitselect + /// + /// v128_t wasm_v128_bitselect (v128_t a, v128_t b, v128_t mask) + /// v128.bitselect : [v128 v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 BitwiseSelect(Vector128 left, Vector128 right, Vector128 select) => BitwiseSelect(left, right, select); - /// v128.bitselect + /// + /// v128_t wasm_v128_bitselect (v128_t a, v128_t b, v128_t mask) + /// v128.bitselect : [v128 v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 BitwiseSelect(Vector128 left, Vector128 right, Vector128 select) => BitwiseSelect(left, right, select); - /// v128.bitselect + /// + /// v128_t wasm_v128_bitselect (v128_t a, v128_t b, v128_t mask) + /// v128.bitselect : [v128 v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 BitwiseSelect(Vector128 left, Vector128 right, Vector128 select) => BitwiseSelect(left, right, select); - /// v128.bitselect + /// + /// v128_t wasm_v128_bitselect (v128_t a, v128_t b, v128_t mask) + /// v128.bitselect : [v128 v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 BitwiseSelect(Vector128 left, Vector128 right, Vector128 select) => BitwiseSelect(left, right, select); - /// v128.bitselect + /// + /// v128_t wasm_v128_bitselect (v128_t a, v128_t b, v128_t mask) + /// v128.bitselect : [v128 v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 BitwiseSelect(Vector128 left, Vector128 right, Vector128 select) => BitwiseSelect(left, right, select); - /// v128.bitselect + /// + /// v128_t wasm_v128_bitselect (v128_t a, v128_t b, v128_t mask) + /// v128.bitselect : [v128 v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 BitwiseSelect(Vector128 left, Vector128 right, Vector128 select) => BitwiseSelect(left, right, select); - /// v128.bitselect + /// + /// v128_t wasm_v128_bitselect (v128_t a, v128_t b, v128_t mask) + /// v128.bitselect : [v128 v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 BitwiseSelect(Vector128 left, Vector128 right, Vector128 select) => BitwiseSelect(left, right, select); - /// v128.bitselect + /// + /// v128_t wasm_v128_bitselect (v128_t a, v128_t b, v128_t mask) + /// v128.bitselect : [v128 v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 BitwiseSelect(Vector128 left, Vector128 right, Vector128 select) => BitwiseSelect(left, right, select); - /// v128.bitselect + /// + /// v128_t wasm_v128_bitselect (v128_t a, v128_t b, v128_t mask) + /// v128.bitselect : [v128 v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 BitwiseSelect(Vector128 left, Vector128 right, Vector128 select) => BitwiseSelect(left, right, select); - /// v128.bitselect + /// + /// v128_t wasm_v128_bitselect (v128_t a, v128_t b, v128_t mask) + /// v128.bitselect : [v128 v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 BitwiseSelect(Vector128 left, Vector128 right, Vector128 select) => BitwiseSelect(left, right, select); - /// v128.bitselect + /// + /// v128_t wasm_v128_bitselect (v128_t a, v128_t b, v128_t mask) + /// v128.bitselect : [v128 v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 BitwiseSelect(Vector128 left, Vector128 right, Vector128 select) => BitwiseSelect(left, right, select); - /// v128.bitselect + /// + /// v128_t wasm_v128_bitselect (v128_t a, v128_t b, v128_t mask) + /// v128.bitselect : [v128 v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 BitwiseSelect(Vector128 left, Vector128 right, Vector128 select) => BitwiseSelect(left, right, select); - /// i8x16.popcnt + /// + /// v128_t wasm_i8x16_popcnt (v128_t a) + /// i8x16.popcnt : [v128] -> [v128] + /// [Intrinsic] public static Vector128 PopCount(Vector128 value) => PopCount(value); // Boolean horizontal reductions - /// v128.any_true + /// + /// bool wasm_v128_any_true (v128_t a) + /// v128.any_true : [v128] -> [i32] + /// [Intrinsic] public static bool AnyTrue(Vector128 value) => AnyTrue(value); - /// v128.any_true + /// + /// bool wasm_v128_any_true (v128_t a) + /// v128.any_true : [v128] -> [i32] + /// [Intrinsic] public static bool AnyTrue(Vector128 value) => AnyTrue(value); - /// v128.any_true + /// + /// bool wasm_v128_any_true (v128_t a) + /// v128.any_true : [v128] -> [i32] + /// [Intrinsic] public static bool AnyTrue(Vector128 value) => AnyTrue(value); - /// v128.any_true + /// + /// bool wasm_v128_any_true (v128_t a) + /// v128.any_true : [v128] -> [i32] + /// [Intrinsic] public static bool AnyTrue(Vector128 value) => AnyTrue(value); - /// v128.any_true + /// + /// bool wasm_v128_any_true (v128_t a) + /// v128.any_true : [v128] -> [i32] + /// [Intrinsic] public static bool AnyTrue(Vector128 value) => AnyTrue(value); - /// v128.any_true + /// + /// bool wasm_v128_any_true (v128_t a) + /// v128.any_true : [v128] -> [i32] + /// [Intrinsic] public static bool AnyTrue(Vector128 value) => AnyTrue(value); - /// v128.any_true + /// + /// bool wasm_v128_any_true (v128_t a) + /// v128.any_true : [v128] -> [i32] + /// [Intrinsic] public static bool AnyTrue(Vector128 value) => AnyTrue(value); - /// v128.any_true + /// + /// bool wasm_v128_any_true (v128_t a) + /// v128.any_true : [v128] -> [i32] + /// [Intrinsic] public static bool AnyTrue(Vector128 value) => AnyTrue(value); - /// v128.any_true + /// + /// bool wasm_v128_any_true (v128_t a) + /// v128.any_true : [v128] -> [i32] + /// [Intrinsic] public static bool AnyTrue(Vector128 value) => AnyTrue(value); - /// v128.any_true + /// + /// bool wasm_v128_any_true (v128_t a) + /// v128.any_true : [v128] -> [i32] + /// [Intrinsic] public static bool AnyTrue(Vector128 value) => AnyTrue(value); - /// v128.any_true + /// + /// bool wasm_v128_any_true (v128_t a) + /// v128.any_true : [v128] -> [i32] + /// [Intrinsic] public static bool AnyTrue(Vector128 value) => AnyTrue(value); - /// v128.any_true + /// + /// bool wasm_v128_any_true (v128_t a) + /// v128.any_true : [v128] -> [i32] + /// [Intrinsic] public static bool AnyTrue(Vector128 value) => AnyTrue(value); - /// i8x16.all_true + /// + /// bool wasm_i8x16_all_true (v128_t a) + /// i8x16.all_true : [v128] -> [i32] + /// [Intrinsic] public static bool AllTrue(Vector128 value) => AllTrue(value); - /// i8x16.all_true + /// + /// bool wasm_i8x16_all_true (v128_t a) + /// i8x16.all_true : [v128] -> [i32] + /// [Intrinsic] public static bool AllTrue(Vector128 value) => AllTrue(value); - /// i16x8.all_true + /// + /// bool wasm_i16x8_all_true (v128_t a) + /// i16x8.all_true : [v128] -> [i32] + /// [Intrinsic] public static bool AllTrue(Vector128 value) => AllTrue(value); - /// i16x8.all_true + /// + /// bool wasm_i16x8_all_true (v128_t a) + /// i16x8.all_true : [v128] -> [i32] + /// [Intrinsic] public static bool AllTrue(Vector128 value) => AllTrue(value); - /// i32x4.all_true + /// + /// bool wasm_i32x4_all_true (v128_t a) + /// i32x4.all_true : [v128] -> [i32] + /// [Intrinsic] public static bool AllTrue(Vector128 value) => AllTrue(value); - /// i32x4.all_true + /// + /// bool wasm_i32x4_all_true (v128_t a) + /// i32x4.all_true : [v128] -> [i32] + /// [Intrinsic] public static bool AllTrue(Vector128 value) => AllTrue(value); - /// i64x2.all_true + /// + /// bool wasm_i64x2_all_true (v128_t a) + /// i64x2.all_true : [v128] -> [i32] + /// [Intrinsic] public static bool AllTrue(Vector128 value) => AllTrue(value); - /// i64x2.all_true + /// + /// bool wasm_i64x2_all_true (v128_t a) + /// i64x2.all_true : [v128] -> [i32] + /// [Intrinsic] public static bool AllTrue(Vector128 value) => AllTrue(value); - /// i32x4.all_true + /// + /// bool wasm_i32x4_all_true (v128_t a) + /// i32x4.all_true : [v128] -> [i32] + /// [Intrinsic] public static bool AllTrue(Vector128 value) => AllTrue(value); - /// i32x4.all_true + /// + /// bool wasm_i32x4_all_true (v128_t a) + /// i32x4.all_true : [v128] -> [i32] + /// [Intrinsic] public static bool AllTrue(Vector128 value) => AllTrue(value); // Bitmask extraction - /// i8x16.bitmask + /// + /// uint32_t wasm_i8x16_bitmask (v128_t a) + /// i8x16.bitmask : [v128] -> [i32] + /// [Intrinsic] public static int Bitmask(Vector128 value) => Bitmask(value); - /// i8x16.bitmask + /// + /// uint32_t wasm_i8x16_bitmask (v128_t a) + /// i8x16.bitmask : [v128] -> [i32] + /// [Intrinsic] public static int Bitmask(Vector128 value) => Bitmask(value); - /// i16x8.bitmask + /// + /// uint32_t wasm_i16x8_bitmask (v128_t a) + /// i16x8.bitmask : [v128] -> [i32] + /// [Intrinsic] public static int Bitmask(Vector128 value) => Bitmask(value); - /// i16x8.bitmask + /// + /// uint32_t wasm_i16x8_bitmask (v128_t a) + /// i16x8.bitmask : [v128] -> [i32] + /// [Intrinsic] public static int Bitmask(Vector128 value) => Bitmask(value); - /// i32x4.bitmask + /// + /// uint32_t wasm_i32x4_bitmask (v128_t a) + /// i32x4.bitmask : [v128] -> [i32] + /// [Intrinsic] public static int Bitmask(Vector128 value) => Bitmask(value); - /// i32x4.bitmask + /// + /// uint32_t wasm_i32x4_bitmask (v128_t a) + /// i32x4.bitmask : [v128] -> [i32] + /// [Intrinsic] public static int Bitmask(Vector128 value) => Bitmask(value); - /// i64x2.bitmask + /// + /// uint32_t wasm_i64x2_bitmask (v128_t a) + /// i64x2.bitmask : [v128] -> [i32] + /// [Intrinsic] public static int Bitmask(Vector128 value) => Bitmask(value); - /// i64x2.bitmask + /// + /// uint32_t wasm_i64x2_bitmask (v128_t a) + /// i64x2.bitmask : [v128] -> [i32] + /// [Intrinsic] public static int Bitmask(Vector128 value) => Bitmask(value); - /// i32x4.bitmask + /// + /// uint32_t wasm_i32x4_bitmask (v128_t a) + /// i32x4.bitmask : [v128] -> [i32] + /// [Intrinsic] public static int Bitmask(Vector128 value) => Bitmask(value); - /// i32x4.bitmask + /// + /// uint32_t wasm_i32x4_bitmask (v128_t a) + /// i32x4.bitmask : [v128] -> [i32] + /// [Intrinsic] public static int Bitmask(Vector128 value) => Bitmask(value); // Comparisons - /// i8x16.eq + /// + /// v128_t wasm_i8x16_eq (v128_t a, v128_t b) + /// i8x16.eq : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareEqual(Vector128 left, Vector128 right) => CompareEqual(left, right); - /// i8x16.eq + /// + /// v128_t wasm_i8x16_eq (v128_t a, v128_t b) + /// i8x16.eq : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareEqual(Vector128 left, Vector128 right) => CompareEqual(left, right); - /// i16x8.eq + /// + /// v128_t wasm_i16x8_eq (v128_t a, v128_t b) + /// i16x8.eq : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareEqual(Vector128 left, Vector128 right) => CompareEqual(left, right); - /// i16x8.eq + /// + /// v128_t wasm_i16x8_eq (v128_t a, v128_t b) + /// i16x8.eq : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareEqual(Vector128 left, Vector128 right) => CompareEqual(left, right); - /// i32x4.eq + /// + /// v128_t wasm_i32x4_eq (v128_t a, v128_t b) + /// i32x4.eq : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareEqual(Vector128 left, Vector128 right) => CompareEqual(left, right); - /// i32x4.eq + /// + /// v128_t wasm_i32x4_eq (v128_t a, v128_t b) + /// i32x4.eq : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareEqual(Vector128 left, Vector128 right) => CompareEqual(left, right); - /// i64x2.eq + /// + /// v128_t wasm_i64x2_eq (v128_t a, v128_t b) + /// i64x2.eq : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareEqual(Vector128 left, Vector128 right) => CompareEqual(left, right); - /// i64x2.eq + /// + /// v128_t wasm_i64x2_eq (v128_t a, v128_t b) + /// i64x2.eq : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareEqual(Vector128 left, Vector128 right) => CompareEqual(left, right); - /// f32x4.eq + /// + /// v128_t wasm_f32x4_eq (v128_t a, v128_t b) + /// f32x4.eq : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareEqual(Vector128 left, Vector128 right) => CompareEqual(left, right); - /// f64x2.eq + /// + /// v128_t wasm_f64x2_eq (v128_t a, v128_t b) + /// f64x2.eq : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareEqual(Vector128 left, Vector128 right) => CompareEqual(left, right); - /// i32x4.eq + /// + /// v128_t wasm_i32x4_eq (v128_t a, v128_t b) + /// i32x4.eq : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareEqual(Vector128 left, Vector128 right) => CompareEqual(left, right); - /// i32x4.eq + /// + /// v128_t wasm_i32x4_eq (v128_t a, v128_t b) + /// i32x4.eq : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareEqual(Vector128 left, Vector128 right) => CompareEqual(left, right); - /// i8x16.ne + /// + /// v128_t wasm_i8x16_ne (v128_t a, v128_t b) + /// i8x16.ne : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareNotEqual(Vector128 left, Vector128 right) => CompareNotEqual(left, right); - /// i8x16.ne + /// + /// v128_t wasm_i8x16_ne (v128_t a, v128_t b) + /// i8x16.ne : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareNotEqual(Vector128 left, Vector128 right) => CompareNotEqual(left, right); - /// i16x8.ne + /// + /// v128_t wasm_i16x8_ne (v128_t a, v128_t b) + /// i16x8.ne : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareNotEqual(Vector128 left, Vector128 right) => CompareNotEqual(left, right); - /// i16x8.ne + /// + /// v128_t wasm_i16x8_ne (v128_t a, v128_t b) + /// i16x8.ne : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareNotEqual(Vector128 left, Vector128 right) => CompareNotEqual(left, right); - /// i32x4.ne + /// + /// v128_t wasm_i32x4_ne (v128_t a, v128_t b) + /// i32x4.ne : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareNotEqual(Vector128 left, Vector128 right) => CompareNotEqual(left, right); - /// i32x4.ne + /// + /// v128_t wasm_i32x4_ne (v128_t a, v128_t b) + /// i32x4.ne : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareNotEqual(Vector128 left, Vector128 right) => CompareNotEqual(left, right); - /// i64x2.ne + /// + /// v128_t wasm_i64x2_ne (v128_t a, v128_t b) + /// i64x2.ne : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareNotEqual(Vector128 left, Vector128 right) => CompareNotEqual(left, right); - /// i64x2.ne + /// + /// v128_t wasm_i64x2_ne (v128_t a, v128_t b) + /// i64x2.ne : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareNotEqual(Vector128 left, Vector128 right) => CompareNotEqual(left, right); - /// f32x4.ne + /// + /// v128_t wasm_f32x4_ne (v128_t a, v128_t b) + /// f32x4.ne : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareNotEqual(Vector128 left, Vector128 right) => CompareNotEqual(left, right); - /// f64x2.ne + /// + /// v128_t wasm_f64x2_ne (v128_t a, v128_t b) + /// f64x2.ne : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareNotEqual(Vector128 left, Vector128 right) => CompareNotEqual(left, right); - /// i32x4.ne + /// + /// v128_t wasm_i32x4_ne (v128_t a, v128_t b) + /// i32x4.ne : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareNotEqual(Vector128 left, Vector128 right) => CompareNotEqual(left, right); - /// i32x4.ne + /// + /// v128_t wasm_i32x4_ne (v128_t a, v128_t b) + /// i32x4.ne : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareNotEqual(Vector128 left, Vector128 right) => CompareNotEqual(left, right); - /// i8x16.lt_s + /// + /// v128_t wasm_i8x16_lt (v128_t a, v128_t b) + /// i8x16.lt_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareLessThan(Vector128 left, Vector128 right) => CompareLessThan(left, right); - /// i8x16.lt_u + /// + /// v128_t wasm_u8x16_lt (v128_t a, v128_t b) + /// i8x16.lt_u : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareLessThan(Vector128 left, Vector128 right) => CompareLessThan(left, right); - /// i16x8.lt_s + /// + /// v128_t wasm_i16x8_lt (v128_t a, v128_t b) + /// i16x8.lt_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareLessThan(Vector128 left, Vector128 right) => CompareLessThan(left, right); - /// i16x8.lt_u + /// + /// v128_t wasm_u16x8_lt (v128_t a, v128_t b) + /// i16x8.lt_u : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareLessThan(Vector128 left, Vector128 right) => CompareLessThan(left, right); - /// i32x4.lt_s + /// + /// v128_t wasm_i32x4_lt (v128_t a, v128_t b) + /// i32x4.lt_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareLessThan(Vector128 left, Vector128 right) => CompareLessThan(left, right); - /// i32x4.lt_u + /// + /// v128_t wasm_u32x4_lt (v128_t a, v128_t b) + /// i32x4.lt_u : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareLessThan(Vector128 left, Vector128 right) => CompareLessThan(left, right); - /// i64x2.lt_s + /// + /// v128_t wasm_i64x2_lt (v128_t a, v128_t b) + /// i64x2.lt_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareLessThan(Vector128 left, Vector128 right) => CompareLessThan(left, right); - /// i64x2.lt_u + /// + /// i64x2.lt_u : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareLessThan(Vector128 left, Vector128 right) => CompareLessThan(left, right); - /// f32x4.lt + /// + /// v128_t wasm_f32x4_lt (v128_t a, v128_t b) + /// f32x4.lt : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareLessThan(Vector128 left, Vector128 right) => CompareLessThan(left, right); - /// f64x2.lt + /// + /// v128_t wasm_f64x2_lt (v128_t a, v128_t b) + /// f64x2.lt : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareLessThan(Vector128 left, Vector128 right) => CompareLessThan(left, right); - /// i32x4.lt_s + /// + /// v128_t wasm_i32x4_lt (v128_t a, v128_t b) + /// i32x4.lt_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareLessThan(Vector128 left, Vector128 right) => CompareLessThan(left, right); - /// i32x4.lt_u + /// + /// v128_t wasm_u32x4_lt (v128_t a, v128_t b) + /// i32x4.lt_u : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareLessThan(Vector128 left, Vector128 right) => CompareLessThan(left, right); - /// i8x16.le_s + /// + /// v128_t wasm_i8x16_le (v128_t a, v128_t b) + /// i8x16.le_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareLessThanOrEqual(Vector128 left, Vector128 right) => CompareLessThanOrEqual(left, right); - /// i8x16.le_u + /// + /// v128_t wasm_u8x16_le (v128_t a, v128_t b) + /// i8x16.le_u : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareLessThanOrEqual(Vector128 left, Vector128 right) => CompareLessThanOrEqual(left, right); - /// i16x8.le_s + /// + /// v128_t wasm_i16x8_le (v128_t a, v128_t b) + /// i16x8.le_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareLessThanOrEqual(Vector128 left, Vector128 right) => CompareLessThanOrEqual(left, right); - /// i16x8.le_u + /// + /// v128_t wasm_u16x8_le (v128_t a, v128_t b) + /// i16x8.le_u : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareLessThanOrEqual(Vector128 left, Vector128 right) => CompareLessThanOrEqual(left, right); - /// i32x4.le_s + /// + /// v128_t wasm_i32x4_le (v128_t a, v128_t b) + /// i32x4.le_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareLessThanOrEqual(Vector128 left, Vector128 right) => CompareLessThanOrEqual(left, right); - /// i32x4.le_u + /// + /// v128_t wasm_u32x4_le (v128_t a, v128_t b) + /// i32x4.le_u : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareLessThanOrEqual(Vector128 left, Vector128 right) => CompareLessThanOrEqual(left, right); - /// i64x2.le_s + /// + /// v128_t wasm_i64x2_le (v128_t a, v128_t b) + /// i64x2.le_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareLessThanOrEqual(Vector128 left, Vector128 right) => CompareLessThanOrEqual(left, right); - /// i64x2.le_u + /// + /// i64x2.le_u : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareLessThanOrEqual(Vector128 left, Vector128 right) => CompareLessThanOrEqual(left, right); - /// f32x4.le + /// + /// v128_t wasm_f32x4_le (v128_t a, v128_t b) + /// f32x4.le : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareLessThanOrEqual(Vector128 left, Vector128 right) => CompareLessThanOrEqual(left, right); - /// f64x2.le + /// + /// v128_t wasm_f64x2_le (v128_t a, v128_t b) + /// f64x2.le : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareLessThanOrEqual(Vector128 left, Vector128 right) => CompareLessThanOrEqual(left, right); - /// i32x4.le_s + /// + /// v128_t wasm_i32x4_le (v128_t a, v128_t b) + /// i32x4.le_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareLessThanOrEqual(Vector128 left, Vector128 right) => CompareLessThanOrEqual(left, right); - /// i32x4.le_u + /// + /// v128_t wasm_u32x4_le (v128_t a, v128_t b) + /// i32x4.le_u : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareLessThanOrEqual(Vector128 left, Vector128 right) => CompareLessThanOrEqual(left, right); - /// i8x16.gt_s + /// + /// v128_t wasm_i8x16_gt (v128_t a, v128_t b) + /// i8x16.gt_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) => CompareGreaterThan(left, right); - /// i8x16.gt_u + /// + /// v128_t wasm_u8x16_gt (v128_t a, v128_t b) + /// i8x16.gt_u : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) => CompareGreaterThan(left, right); - /// i16x8.gt_s + /// + /// v128_t wasm_i16x8_gt (v128_t a, v128_t b) + /// i16x8.gt_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) => CompareGreaterThan(left, right); - /// i16x8.gt_u + /// + /// v128_t wasm_u16x8_gt (v128_t a, v128_t b) + /// i16x8.gt_u : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) => CompareGreaterThan(left, right); - /// i32x4.gt_s + /// + /// v128_t wasm_i32x4_gt (v128_t a, v128_t b) + /// i32x4.gt_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) => CompareGreaterThan(left, right); - /// i32x4.gt_u + /// + /// v128_t wasm_u32x4_gt (v128_t a, v128_t b) + /// i32x4.gt_u : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) => CompareGreaterThan(left, right); - /// i64x2.gt_s + /// + /// v128_t wasm_i64x2_gt (v128_t a, v128_t b) + /// i64x2.gt_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) => CompareGreaterThan(left, right); - /// i64x2.gt_u + /// + /// i64x2.gt_u : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) => CompareGreaterThan(left, right); - /// f32x4.gt + /// + /// v128_t wasm_f32x4_gt (v128_t a, v128_t b) + /// f32x4.gt : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) => CompareGreaterThan(left, right); - /// f64x2.gt + /// + /// v128_t wasm_f64x2_gt (v128_t a, v128_t b) + /// f64x2.gt : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) => CompareGreaterThan(left, right); - /// i32x4.gt_s + /// + /// v128_t wasm_i32x4_gt (v128_t a, v128_t b) + /// i32x4.gt_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) => CompareGreaterThan(left, right); - /// i32x4.gt_u + /// + /// v128_t wasm_u32x4_gt (v128_t a, v128_t b) + /// i32x4.gt_u : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) => CompareGreaterThan(left, right); - /// i8x16.ge_s + /// + /// v128_t wasm_i8x16_ge (v128_t a, v128_t b) + /// i8x16.ge_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareGreaterThanOrEqual(Vector128 left, Vector128 right) => CompareGreaterThanOrEqual(left, right); - /// i8x16.ge_u + /// + /// v128_t wasm_u8x16_ge (v128_t a, v128_t b) + /// i8x16.ge_u : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareGreaterThanOrEqual(Vector128 left, Vector128 right) => CompareGreaterThanOrEqual(left, right); - /// i16x8.ge_s + /// + /// v128_t wasm_i16x8_ge (v128_t a, v128_t b) + /// i16x8.ge_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareGreaterThanOrEqual(Vector128 left, Vector128 right) => CompareGreaterThanOrEqual(left, right); - /// i16x8.ge_u + /// + /// v128_t wasm_u16x8_ge (v128_t a, v128_t b) + /// i16x8.ge_u : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareGreaterThanOrEqual(Vector128 left, Vector128 right) => CompareGreaterThanOrEqual(left, right); - /// i32x4.ge_s + /// + /// v128_t wasm_i32x4_ge (v128_t a, v128_t b) + /// i32x4.ge_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareGreaterThanOrEqual(Vector128 left, Vector128 right) => CompareGreaterThanOrEqual(left, right); - /// i32x4.ge_u + /// + /// v128_t wasm_u32x4_ge (v128_t a, v128_t b) + /// i32x4.ge_u : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareGreaterThanOrEqual(Vector128 left, Vector128 right) => CompareGreaterThanOrEqual(left, right); - /// i32x4.ge_s + /// + /// v128_t wasm_i32x4_ge (v128_t a, v128_t b) + /// i32x4.ge_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareGreaterThanOrEqual(Vector128 left, Vector128 right) => CompareGreaterThanOrEqual(left, right); - /// i64x2.ge_s + /// + /// v128_t wasm_i64x2_ge (v128_t a, v128_t b) + /// i64x2.ge_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareGreaterThanOrEqual(Vector128 left, Vector128 right) => CompareGreaterThanOrEqual(left, right); - /// f32x4.ge + /// + /// v128_t wasm_f32x4_ge (v128_t a, v128_t b) + /// f32x4.ge : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareGreaterThanOrEqual(Vector128 left, Vector128 right) => CompareGreaterThanOrEqual(left, right); - /// f64x2.ge + /// + /// v128_t wasm_f64x2_ge (v128_t a, v128_t b) + /// f64x2.ge : [v128 v128] -> [v128] + /// public static Vector128 CompareGreaterThanOrEqual(Vector128 left, Vector128 right) => CompareGreaterThanOrEqual(left, right); - /// i32x4.ge_s + /// + /// v128_t wasm_i32x4_ge (v128_t a, v128_t b) + /// i32x4.ge_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareGreaterThanOrEqual(Vector128 left, Vector128 right) => CompareGreaterThanOrEqual(left, right); - /// i32x4.ge_u + /// + /// v128_t wasm_u32x4_ge (v128_t a, v128_t b) + /// i32x4.ge_u : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 CompareGreaterThanOrEqual(Vector128 left, Vector128 right) => CompareGreaterThanOrEqual(left, right); // Load - /// v128.load + /// + /// v128_t wasm_v128_load (const void *mem) + /// v128.load memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadVector128(sbyte* address) => LoadVector128(address); - /// v128.load + /// + /// v128_t wasm_v128_load (const void *mem) + /// v128.load memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadVector128(byte* address) => LoadVector128(address); - /// v128.load + /// + /// v128_t wasm_v128_load (const void *mem) + /// v128.load memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadVector128(short* address) => LoadVector128(address); - /// v128.load + /// + /// v128_t wasm_v128_load (const void *mem) + /// v128.load memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadVector128(ushort* address) => LoadVector128(address); - /// v128.load + /// + /// v128_t wasm_v128_load (const void *mem) + /// v128.load memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadVector128(int* address) => LoadVector128(address); - /// v128.load + /// + /// v128_t wasm_v128_load (const void *mem) + /// v128.load memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadVector128(uint* address) => LoadVector128(address); - /// v128.load + /// + /// v128_t wasm_v128_load (const void *mem) + /// v128.load memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadVector128(long* address) => LoadVector128(address); - /// v128.load + /// + /// v128_t wasm_v128_load (const void *mem) + /// v128.load memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadVector128(ulong* address) => LoadVector128(address); - /// v128.load + /// + /// v128_t wasm_v128_load (const void *mem) + /// v128.load memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadVector128(float* address) => LoadVector128(address); - /// v128.load + /// + /// v128_t wasm_v128_load (const void *mem) + /// v128.load memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadVector128(double* address) => LoadVector128(address); - /// v128.load + /// + /// v128_t wasm_v128_load (const void *mem) + /// v128.load memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadVector128(nint* address) => LoadVector128(address); - /// v128.load + /// + /// v128_t wasm_v128_load (const void *mem) + /// v128.load memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadVector128(nuint* address) => LoadVector128(address); - /// v128.load32.zero + /// + /// v128_t wasm_v128_load32_zero (const void *mem) + /// v128.load32_zero memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarVector128(int* address) => LoadScalarVector128(address); - /// v128.load32.zero + /// + /// v128_t wasm_v128_load32_zero (const void *mem) + /// v128.load32_zero memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarVector128(uint* address) => LoadScalarVector128(address); - /// v128.load64.zero + /// + /// v128_t wasm_v128_load64_zero (const void *mem) + /// v128.load64_zero memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarVector128(long* address) => LoadScalarVector128(address); - /// v128.load64.zero + /// + /// v128_t wasm_v128_load64_zero (const void *mem) + /// v128.load64_zero memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarVector128(ulong* address) => LoadScalarVector128(address); - /// v128.load32.zero + /// + /// v128_t wasm_v128_load32_zero (const void *mem) + /// v128.load32_zero memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarVector128(float* address) => LoadScalarVector128(address); - /// v128.load64.zero + /// + /// v128_t wasm_v128_load64_zero (const void *mem) + /// v128.load64_zero memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarVector128(double* address) => LoadScalarVector128(address); - /// v128.load32.zero + /// + /// v128_t wasm_v128_load32_zero (const void *mem) + /// v128.load32_zero memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarVector128(nint* address) => LoadScalarVector128(address); - /// v128.load32.zero + /// + /// v128_t wasm_v128_load32_zero (const void *mem) + /// v128.load32_zero memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarVector128(nuint* address) => LoadScalarVector128(address); - /// v128.load8_splat + /// + /// v128_t wasm_v128_load8_splat (const void *mem) + /// v128.load8_splat memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarAndSplatVector128(sbyte* address) => LoadScalarAndSplatVector128(address); - /// v128.load8_splat + /// + /// v128_t wasm_v128_load8_splat (const void *mem) + /// v128.load8_splat memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarAndSplatVector128(byte* address) => LoadScalarAndSplatVector128(address); - /// v128.load16_splat + /// + /// v128_t wasm_v128_load16_splat (const void *mem) + /// v128.load16_splat memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarAndSplatVector128(short* address) => LoadScalarAndSplatVector128(address); - /// v128.load16_splat + /// + /// v128_t wasm_v128_load16_splat (const void *mem) + /// v128.load16_splat memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarAndSplatVector128(ushort* address) => LoadScalarAndSplatVector128(address); - /// v128.load32_splat + /// + /// v128_t wasm_v128_load32_splat (const void *mem) + /// v128.load32_splat memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarAndSplatVector128(int* address) => LoadScalarAndSplatVector128(address); - /// v128.load32_splat + /// + /// v128_t wasm_v128_load32_splat (const void *mem) + /// v128.load32_splat memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarAndSplatVector128(uint* address) => LoadScalarAndSplatVector128(address); - /// v128.load64_splat + /// + /// v128_t wasm_v128_load64_splat (const void *mem) + /// v128.load64_splat memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarAndSplatVector128(long* address) => LoadScalarAndSplatVector128(address); - /// v128.load64_splat + /// + /// v128_t wasm_v128_load64_splat (const void *mem) + /// v128.load64_splat memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarAndSplatVector128(ulong* address) => LoadScalarAndSplatVector128(address); - /// v128.load64_splat + /// + /// v128_t wasm_v128_load64_splat (const void *mem) + /// v128.load64_splat memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarAndSplatVector128(float* address) => LoadScalarAndSplatVector128(address); - /// v128.load64_splat + /// + /// v128_t wasm_v128_load64_splat (const void *mem) + /// v128.load64_splat memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarAndSplatVector128(double* address) => LoadScalarAndSplatVector128(address); - /// v128.load64_splat + /// + /// v128_t wasm_v128_load64_splat (const void *mem) + /// v128.load64_splat memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarAndSplatVector128(nint* address) => LoadScalarAndSplatVector128(address); - /// v128.load64_splat + /// + /// v128_t wasm_v128_load64_splat (const void *mem) + /// v128.load64_splat memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarAndSplatVector128(nuint* address) => LoadScalarAndSplatVector128(address); - /// v128.load8_lane + /// + /// v128_t wasm_v128_load8_lane (const void *mem, v128_t vec, int i) + /// v128.load8_lane memarg laneidx : [i32 v128] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarAndInsert(sbyte* address, Vector128 vector, [ConstantExpected(Max = (byte)(15))] byte index) => LoadScalarAndInsert(address, vector, index); // takes ImmLaneIdx16 - /// v128.load8_lane + /// + /// v128_t wasm_v128_load8_lane (const void *mem, v128_t vec, int i) + /// v128.load8_lane memarg laneidx : [i32 v128] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarAndInsert(byte* address, Vector128 vector, [ConstantExpected(Max = (byte)(15))] byte index) => LoadScalarAndInsert(address, vector, index); // takes ImmLaneIdx16 - /// v128.load16_lane + /// + /// v128_t wasm_v128_load16_lane (const void *mem, v128_t vec, int i) + /// v128.load16_lane memarg laneidx : [i32 v128] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarAndInsert(short* address, Vector128 vector, [ConstantExpected(Max = (byte)(7))] byte index) => LoadScalarAndInsert(address, vector, index); // takes ImmLaneIdx8 - /// v128.load16_lane + /// + /// v128_t wasm_v128_load16_lane (const void *mem, v128_t vec, int i) + /// v128.load16_lane memarg laneidx : [i32 v128] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarAndInsert(ushort* address, Vector128 vector, [ConstantExpected(Max = (byte)(7))] byte index) => LoadScalarAndInsert(address, vector, index); // takes ImmLaneIdx8 - /// v128.load32_lane + /// + /// v128_t wasm_v128_load32_lane (const void *mem, v128_t vec, int i) + /// v128.load32_lane memarg laneidx : [i32 v128] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarAndInsert(int* address, Vector128 vector, [ConstantExpected(Max = (byte)(3))] byte index) => LoadScalarAndInsert(address, vector, index); // takes ImmLaneIdx4 - /// v128.load32_lane + /// + /// v128_t wasm_v128_load32_lane (const void *mem, v128_t vec, int i) + /// v128.load32_lane memarg laneidx : [i32 v128] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarAndInsert(uint* address, Vector128 vector, [ConstantExpected(Max = (byte)(3))] byte index) => LoadScalarAndInsert(address, vector, index); // takes ImmLaneIdx4 - /// v128.load64_lane + /// + /// v128_t wasm_v128_load64_lane (const void *mem, v128_t vec, int i) + /// v128.load64_lane memarg laneidx : [i32 v128] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarAndInsert(long* address, Vector128 vector, [ConstantExpected(Max = (byte)(1))] byte index) => LoadScalarAndInsert(address, vector, index); // takes ImmLaneIdx2 - /// v128.load64_lane + /// + /// v128_t wasm_v128_load64_lane (const void *mem, v128_t vec, int i) + /// v128.load64_lane memarg laneidx : [i32 v128] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarAndInsert(ulong* address, Vector128 vector, [ConstantExpected(Max = (byte)(1))] byte index) => LoadScalarAndInsert(address, vector, index); // takes ImmLaneIdx2 - /// v128.load32_lane + /// + /// v128_t wasm_v128_load32_lane (const void *mem, v128_t vec, int i) + /// v128.load32_lane memarg laneidx : [i32 v128] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarAndInsert(float* address, Vector128 vector, [ConstantExpected(Max = (byte)(3))] byte index) => LoadScalarAndInsert(address, vector, index); // takes ImmLaneIdx4 - /// v128.load64_lane + /// + /// v128_t wasm_v128_load64_lane (const void *mem, v128_t vec, int i) + /// v128.load64_lane memarg laneidx : [i32 v128] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarAndInsert(double* address, Vector128 vector, [ConstantExpected(Max = (byte)(1))] byte index) => LoadScalarAndInsert(address, vector, index); // takes ImmLaneIdx2 - /// v128.load32_lane + /// + /// v128_t wasm_v128_load32_lane (const void *mem, v128_t vec, int i) + /// v128.load32_lane memarg laneidx : [i32 v128] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarAndInsert(nint* address, Vector128 vector, [ConstantExpected(Max = (byte)(3))] byte index) => LoadScalarAndInsert(address, vector, index); // takes ImmLaneIdx4 - /// v128.load32_lane + /// + /// v128_t wasm_v128_load32_lane (const void *mem, v128_t vec, int i) + /// v128.load32_lane memarg laneidx : [i32 v128] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadScalarAndInsert(nuint* address, Vector128 vector, [ConstantExpected(Max = (byte)(3))] byte index) => LoadScalarAndInsert(address, vector, index); // takes ImmLaneIdx4 // Store - /// v128.store + /// + /// void wasm_v128_store (void *mem, v128_t a) + /// v128.store memarg : [i32 v128] -> [] + /// [Intrinsic] public static unsafe void Store(sbyte* address, Vector128 source) => Store(address, source); - /// v128.store + /// + /// void wasm_v128_store (void *mem, v128_t a) + /// v128.store memarg : [i32 v128] -> [] + /// [Intrinsic] public static unsafe void Store(byte* address, Vector128 source) => Store(address, source); - /// v128.store + /// + /// void wasm_v128_store (void *mem, v128_t a) + /// v128.store memarg : [i32 v128] -> [] + /// [Intrinsic] public static unsafe void Store(short* address, Vector128 source) => Store(address, source); - /// v128.store + /// + /// void wasm_v128_store (void *mem, v128_t a) + /// v128.store memarg : [i32 v128] -> [] + /// [Intrinsic] public static unsafe void Store(ushort* address, Vector128 source) => Store(address, source); - /// v128.store + /// + /// void wasm_v128_store (void *mem, v128_t a) + /// v128.store memarg : [i32 v128] -> [] + /// [Intrinsic] public static unsafe void Store(int* address, Vector128 source) => Store(address, source); - /// v128.store + /// + /// void wasm_v128_store (void *mem, v128_t a) + /// v128.store memarg : [i32 v128] -> [] + /// [Intrinsic] public static unsafe void Store(uint* address, Vector128 source) => Store(address, source); - /// v128.store + /// + /// void wasm_v128_store (void *mem, v128_t a) + /// v128.store memarg : [i32 v128] -> [] + /// [Intrinsic] public static unsafe void Store(long* address, Vector128 source) => Store(address, source); - /// v128.store + /// + /// void wasm_v128_store (void *mem, v128_t a) + /// v128.store memarg : [i32 v128] -> [] + /// [Intrinsic] public static unsafe void Store(ulong* address, Vector128 source) => Store(address, source); - /// v128.store + /// + /// void wasm_v128_store (void *mem, v128_t a) + /// v128.store memarg : [i32 v128] -> [] + /// [Intrinsic] public static unsafe void Store(float* address, Vector128 source) => Store(address, source); - /// v128.store + /// + /// void wasm_v128_store (void *mem, v128_t a) + /// v128.store memarg : [i32 v128] -> [] + /// [Intrinsic] public static unsafe void Store(double* address, Vector128 source) => Store(address, source); - /// v128.store + /// + /// void wasm_v128_store (void *mem, v128_t a) + /// v128.store memarg : [i32 v128] -> [] + /// [Intrinsic] public static unsafe void Store(nint* address, Vector128 source) => Store(address, source); - /// v128.store + /// + /// void wasm_v128_store (void *mem, v128_t a) + /// v128.store memarg : [i32 v128] -> [] + /// [Intrinsic] public static unsafe void Store(nuint* address, Vector128 source) => Store(address, source); - /// v128.store8_lane + /// + /// void wasm_v128_store8_lane (void *mem, v128_t vec, int i) + /// v128.store8_lane memarg laneidx : [i32 v128] -> [] + /// [Intrinsic] public static unsafe void StoreSelectedScalar(sbyte* address, Vector128 source, [ConstantExpected(Max = (byte)(15))] byte index) => StoreSelectedScalar(address, source, index); // takes ImmLaneIdx16 - /// v128.store8_lane + /// + /// void wasm_v128_store8_lane (void *mem, v128_t vec, int i) + /// v128.store8_lane memarg laneidx : [i32 v128] -> [] + /// [Intrinsic] public static unsafe void StoreSelectedScalar(byte* address, Vector128 source, [ConstantExpected(Max = (byte)(15))] byte index) => StoreSelectedScalar(address, source, index); // takes ImmLaneIdx16 - /// v128.store16_lane + /// + /// void wasm_v128_store16_lane (void *mem, v128_t vec, int i) + /// v128.store16_lane memarg laneidx : [i32 v128] -> [] + /// [Intrinsic] public static unsafe void StoreSelectedScalar(short* address, Vector128 source, [ConstantExpected(Max = (byte)(7))] byte index) => StoreSelectedScalar(address, source, index); // takes ImmLaneIdx8 - /// v128.store16_lane + /// + /// void wasm_v128_store16_lane (void *mem, v128_t vec, int i) + /// v128.store16_lane memarg laneidx : [i32 v128] -> [] + /// [Intrinsic] public static unsafe void StoreSelectedScalar(ushort* address, Vector128 source, [ConstantExpected(Max = (byte)(7))] byte index) => StoreSelectedScalar(address, source, index); // takes ImmLaneIdx8 - /// v128.store32_lane + /// + /// void wasm_v128_store32_lane (void *mem, v128_t vec, int i) + /// v128.store32_lane memarg laneidx : [i32 v128] -> [] + /// [Intrinsic] public static unsafe void StoreSelectedScalar(int* address, Vector128 source, [ConstantExpected(Max = (byte)(3))] byte index) => StoreSelectedScalar(address, source, index); // takes ImmLaneIdx4 - /// v128.store32_lane + /// + /// void wasm_v128_store32_lane (void *mem, v128_t vec, int i) + /// v128.store32_lane memarg laneidx : [i32 v128] -> [] + /// [Intrinsic] public static unsafe void StoreSelectedScalar(uint* address, Vector128 source, [ConstantExpected(Max = (byte)(3))] byte index) => StoreSelectedScalar(address, source, index); // takes ImmLaneIdx4 - /// v128.store64_lane + /// + /// void wasm_v128_store64_lane (void *mem, v128_t vec, int i) + /// v128.store64_lane memarg laneidx : [i32 v128] -> [] + /// [Intrinsic] public static unsafe void StoreSelectedScalar(long* address, Vector128 source, [ConstantExpected(Max = (byte)(1))] byte index) => StoreSelectedScalar(address, source, index); // takes ImmLaneIdx2 - /// v128.store64_lane + /// + /// void wasm_v128_store64_lane (void *mem, v128_t vec, int i) + /// v128.store64_lane memarg laneidx : [i32 v128] -> [] + /// [Intrinsic] public static unsafe void StoreSelectedScalar(ulong* address, Vector128 source, [ConstantExpected(Max = (byte)(1))] byte index) => StoreSelectedScalar(address, source, index); // takes ImmLaneIdx2 - /// v128.store32_lane + /// + /// void wasm_v128_store32_lane (void *mem, v128_t vec, int i) + /// v128.store32_lane memarg laneidx : [i32 v128] -> [] + /// [Intrinsic] public static unsafe void StoreSelectedScalar(float* address, Vector128 source, [ConstantExpected(Max = (byte)(3))] byte index) => StoreSelectedScalar(address, source, index); // takes ImmLaneIdx4 - /// v128.store64_lane + /// + /// void wasm_v128_store64_lane (void *mem, v128_t vec, int i) + /// v128.store64_lane memarg laneidx : [i32 v128] -> [] + /// [Intrinsic] public static unsafe void StoreSelectedScalar(double* address, Vector128 source, [ConstantExpected(Max = (byte)(1))] byte index) => StoreSelectedScalar(address, source, index); // takes ImmLaneIdx2 - /// v128.store32_lane + /// + /// void wasm_v128_store32_lane (void *mem, v128_t vec, int i) + /// v128.store32_lane memarg laneidx : [i32 v128] -> [] + /// [Intrinsic] public static unsafe void StoreSelectedScalar(nint* address, Vector128 source, [ConstantExpected(Max = (byte)(3))] byte index) => StoreSelectedScalar(address, source, index); - /// v128.store32_lane + /// + /// void wasm_v128_store32_lane (void *mem, v128_t vec, int i) + /// v128.store32_lane memarg laneidx : [i32 v128] -> [] + /// [Intrinsic] public static unsafe void StoreSelectedScalar(nuint* address, Vector128 source, [ConstantExpected(Max = (byte)(3))] byte index) => StoreSelectedScalar(address, source, index); - /// v128.load8x8_s + /// + /// v128_t wasm_i16x8_load8x8 (const void *mem) + /// v128.load8x8_s memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadWideningVector128(sbyte* address) => LoadWideningVector128(address); - /// v128.load8x8_u + /// + /// v128_t wasm_u16x8_load8x8 (const void *mem) + /// v128.load8x8_u memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadWideningVector128(byte* address) => LoadWideningVector128(address); - /// v128.load16x4_s + /// + /// v128_t wasm_i32x4_load16x4 (const void *mem) + /// v128.load16x4_s memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadWideningVector128(short* address) => LoadWideningVector128(address); - /// v128.load16x4_u + /// + /// v128_t wasm_u32x4_load16x4 (const void *mem) + /// v128.load16x4_u memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadWideningVector128(ushort* address) => LoadWideningVector128(address); - /// v128.load32x2_s + /// + /// v128_t wasm_i64x2_load32x2 (const void *mem) + /// v128.load32x2_s memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadWideningVector128(int* address) => LoadWideningVector128(address); - /// v128.load32x2_u + /// + /// v128_t wasm_u64x2_load32x2 (const void *mem) + /// v128.load32x2_u memarg : [i32] -> [v128] + /// [Intrinsic] public static unsafe Vector128 LoadWideningVector128(uint* address) => LoadWideningVector128(address); // Floating-point sign bit operations - /// f32x4.neg + /// + /// v128_t wasm_f32x4_neg (v128_t a) + /// f32x4.neg : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Negate(Vector128 value) => Negate(value); - /// f64x2.neg + /// + /// v128_t wasm_f64x2_neg (v128_t a) + /// f64x2.neg : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Negate(Vector128 value) => Negate(value); - /// f32x4.abs + /// + /// v128_t wasm_f32x4_abs (v128_t a) + /// f32x4.abs : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Abs(Vector128 value) => Abs(value); - /// f64x2.abs + /// + /// v128_t wasm_f64x2_abs (v128_t a) + /// f64x2.abs : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Abs(Vector128 value) => Abs(value); // Floating-point min and max - /// f32x4.min + /// + /// v128_t wasm_f32x4_min (v128_t a, v128_t b) + /// f32x4.min : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Min(Vector128 left, Vector128 right) => Min(left, right); - /// f64x2.min + /// + /// v128_t wasm_f64x2_min (v128_t a, v128_t b) + /// f64x2.min : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Min(Vector128 left, Vector128 right) => Min(left, right); - /// f32x4.max + /// + /// v128_t wasm_f32x4_max (v128_t a, v128_t b) + /// f32x4.max : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Max(Vector128 left, Vector128 right) => Max(left, right); - /// f64x2.max + /// + /// v128_t wasm_f64x2_max (v128_t a, v128_t b) + /// f64x2.max : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Max(Vector128 left, Vector128 right) => Max(left, right); - /// f32x4.pmin + /// + /// v128_t wasm_f32x4_pmin (v128_t a, v128_t b) + /// f32x4.pmin : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 PseudoMin(Vector128 left, Vector128 right) => PseudoMin(left, right); - /// f64x2.pmin + /// + /// v128_t wasm_f64x2_pmin (v128_t a, v128_t b) + /// f64x2.pmin : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 PseudoMin(Vector128 left, Vector128 right) => PseudoMin(left, right); - /// f32x4.pmax + /// + /// v128_t wasm_f32x4_pmax (v128_t a, v128_t b) + /// f32x4.pmax : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 PseudoMax(Vector128 left, Vector128 right) => PseudoMax(left, right); - /// f64x2.pmax + /// + /// v128_t wasm_f64x2_pmax (v128_t a, v128_t b) + /// f64x2.pmax : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 PseudoMax(Vector128 left, Vector128 right) => PseudoMax(left, right); // Floating-point arithmetic - /// f32x4.add + /// + /// v128_t wasm_f32x4_add (v128_t a, v128_t b) + /// f32x4.add : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Add(Vector128 left, Vector128 right) => Add(left, right); - /// f64x2.add + /// + /// v128_t wasm_f64x2_add (v128_t a, v128_t b) + /// f64x2.add : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Add(Vector128 left, Vector128 right) => Add(left, right); - /// f32x4.sub + /// + /// v128_t wasm_f32x4_sub (v128_t a, v128_t b) + /// f32x4.sub : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Subtract(Vector128 left, Vector128 right) => Subtract(left, right); - /// f64x2.sub + /// + /// v128_t wasm_f64x2_sub (v128_t a, v128_t b) + /// f64x2.sub : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Subtract(Vector128 left, Vector128 right) => Subtract(left, right); - /// f32x4.div + /// + /// v128_t wasm_f32x4_div (v128_t a, v128_t b) + /// f32x4.div : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Divide(Vector128 left, Vector128 right) => Divide(left, right); - /// f64x2.div + /// + /// v128_t wasm_f64x2_div (v128_t a, v128_t b) + /// f64x2.div : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Divide(Vector128 left, Vector128 right) => Divide(left, right); - /// f32x4.mul + /// + /// v128_t wasm_f32x4_mul (v128_t a, v128_t b) + /// f32x4.mul : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Multiply(Vector128 left, Vector128 right) => Multiply(left, right); - /// f64x2.mul + /// + /// v128_t wasm_f64x2_mul (v128_t a, v128_t b) + /// f64x2.mul : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 Multiply(Vector128 left, Vector128 right) => Multiply(left, right); - /// f32x4.sqrt + /// + /// v128_t wasm_f32x4_sqrt (v128_t a) + /// f32x4.sqrt : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Sqrt(Vector128 value) => Sqrt(value); - /// f64x2.sqrt + /// + /// v128_t wasm_f64x2_sqrt (v128_t a) + /// f64x2.sqrt : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Sqrt(Vector128 value) => Sqrt(value); - /// f32x4.ceil + /// + /// v128_t wasm_f32x4_ceil (v128_t a) + /// f32x4.ceil : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Ceiling(Vector128 value) => Ceiling(value); - /// f64x2.ceil + /// + /// v128_t wasm_f64x2_ceil (v128_t a) + /// f64x2.ceil : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Ceiling(Vector128 value) => Ceiling(value); - /// f32x4.floor + /// + /// v128_t wasm_f32x4_floor (v128_t a) + /// f32x4.floor : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Floor(Vector128 value) => Floor(value); - /// f64x2.floor + /// + /// v128_t wasm_f64x2_floor (v128_t a) + /// f64x2.floor : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Floor(Vector128 value) => Floor(value); - /// f32x4.trunc + /// + /// v128_t wasm_f32x4_trunc (v128_t a) + /// f32x4.trunc : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Truncate(Vector128 value) => Truncate(value); - /// f64x2.trunc + /// + /// v128_t wasm_f64x2_trunc (v128_t a) + /// f64x2.trunc : [v128] -> [v128] + /// [Intrinsic] public static Vector128 Truncate(Vector128 value) => Truncate(value); - /// f32x4.nearest + /// + /// v128_t wasm_f32x4_nearest (v128_t a) + /// f32x4.nearest : [v128] -> [v128] + /// [Intrinsic] public static Vector128 RoundToNearest(Vector128 value) => RoundToNearest(value); - /// f64x2.nearest + /// + /// v128_t wasm_f64x2_nearest (v128_t a) + /// f64x2.nearest : [v128] -> [v128] + /// [Intrinsic] public static Vector128 RoundToNearest(Vector128 value) => RoundToNearest(value); // Conversions - /// f32x4.convert_i32x4_s + /// + /// v128_t wasm_f32x4_convert_i32x4 (v128_t a) + /// f32x4.convert_i32x4_s : [v128] -> [v128] + /// [Intrinsic] public static Vector128 ConvertToSingle(Vector128 value) => ConvertToSingle(value); - /// f32x4.convert_i32x4_u + /// + /// v128_t wasm_f32x4_convert_u32x4 (v128_t a) + /// f32x4.convert_i32x4_u : [v128] -> [v128] + /// [Intrinsic] public static Vector128 ConvertToSingle(Vector128 value) => ConvertToSingle(value); - /// f32x4.demote_f64x2_zero + /// + /// v128_t wasm_f32x4_demote_f64x2_zero (v128_t a) + /// f32x4.demote_f64x2_zero : [v128] -> [v128] + /// [Intrinsic] public static Vector128 ConvertToSingle(Vector128 value) => ConvertToSingle(value); - /// f64x2.convert_low_i32x4_s + /// + /// v128_t wasm_f64x2_convert_low_i32x4 (v128_t a) + /// f64x2.convert_low_i32x4_s : [v128] -> [v128] + /// [Intrinsic] public static Vector128 ConvertToDoubleLower(Vector128 value) => ConvertToDoubleLower(value); - /// f64x2.convert_low_i32x4_u + /// + /// v128_t wasm_f64x2_convert_low_u32x4 (v128_t a) + /// f64x2.convert_low_i32x4_u : [v128] -> [v128] + /// [Intrinsic] public static Vector128 ConvertToDoubleLower(Vector128 value) => ConvertToDoubleLower(value); - /// f64x2.promote_low_f32x4 + /// + /// v128_t wasm_f64x2_promote_low_f32x4 (v128_t a) + /// f64x2.promote_low_f32x4 : [v128] -> [v128] + /// [Intrinsic] public static Vector128 ConvertToDoubleLower(Vector128 value) => ConvertToDoubleLower(value); - /// i32x4.trunc_sat_f32x4_s + /// + /// v128_t wasm_i32x4_trunc_sat_f32x4 (v128_t a) + /// i32x4.trunc_sat_f32x4_s : [v128] -> [v128] + /// [Intrinsic] public static Vector128 ConvertToInt32Saturate(Vector128 value) => ConvertToInt32Saturate(value); - /// i32x4.trunc_sat_f32x4_u + /// + /// v128_t wasm_u32x4_trunc_sat_f32x4 (v128_t a) + /// i32x4.trunc_sat_f32x4_u : [v128] -> [v128] + /// [Intrinsic] public static Vector128 ConvertToUInt32Saturate(Vector128 value) => ConvertToUInt32Saturate(value); - /// i32x4.trunc_sat_f64x2_s_zero + /// + /// v128_t wasm_i32x4_trunc_sat_f64x2_zero (v128_t a) + /// i32x4.trunc_sat_f64x2_s_zero : [v128] -> [v128] + /// [Intrinsic] public static Vector128 ConvertToInt32Saturate(Vector128 value) => ConvertToInt32Saturate(value); - /// i32x4.trunc_sat_f64x2_u_zero + /// + /// v128_t wasm_u32x4_trunc_sat_f64x2_zero (v128_t a) + /// i32x4.trunc_sat_f64x2_u_zero : [v128] -> [v128] + /// [Intrinsic] public static Vector128 ConvertToUInt32Saturate(Vector128 value) => ConvertToUInt32Saturate(value); - /// i8x16.narrow_i16x8_s + /// + /// v128_t wasm_i8x16_narrow_i16x8 (v128_t a, v128_t b) + /// i8x16.narrow_i16x8_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 ConvertNarrowingSaturateSigned(Vector128 lower, Vector128 upper) => ConvertNarrowingSaturateSigned(lower, upper); - /// i16x8.narrow_i32x4_s + /// + /// v128_t wasm_i16x8_narrow_i32x4 (v128_t a, v128_t b) + /// i16x8.narrow_i32x4_s : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 ConvertNarrowingSaturateSigned(Vector128 lower, Vector128 upper) => ConvertNarrowingSaturateSigned(lower, upper); - /// i8x16.narrow_i16x8_u + /// + /// v128_t wasm_u8x16_narrow_i16x8 (v128_t a, v128_t b) + /// i8x16.narrow_i16x8_u : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 ConvertNarrowingSaturateUnsigned(Vector128 lower, Vector128 upper) => ConvertNarrowingSaturateUnsigned(lower, upper); - /// i16x8.narrow_i32x4_u + /// + /// v128_t wasm_u16x8_narrow_i32x4 (v128_t a, v128_t b) + /// i16x8.narrow_i32x4_u : [v128 v128] -> [v128] + /// [Intrinsic] public static Vector128 ConvertNarrowingSaturateUnsigned(Vector128 lower, Vector128 upper) => ConvertNarrowingSaturateUnsigned(lower, upper); - /// i16x8.extend_low_i8x16_s + /// + /// v128_t wasm_i16x8_extend_low_i8x16 (v128_t a) + /// i16x8.extend_low_i8x16_s : [v128] -> [v128] + /// [Intrinsic] public static Vector128 SignExtendWideningLower(Vector128 value) => SignExtendWideningLower(value); - /// i16x8.extend_low_i8x16_s + /// + /// v128_t wasm_i16x8_extend_low_i8x16 (v128_t a) + /// i16x8.extend_low_i8x16_s : [v128] -> [v128] + /// [Intrinsic] public static Vector128 SignExtendWideningLower(Vector128 value) => SignExtendWideningLower(value); - /// i32x4.extend_low_i16x8_s + /// + /// v128_t wasm_i32x4_extend_low_i16x8 (v128_t a) + /// i32x4.extend_low_i16x8_s : [v128] -> [v128] + /// [Intrinsic] public static Vector128 SignExtendWideningLower(Vector128 value) => SignExtendWideningLower(value); - /// i32x4.extend_low_i16x8_s + /// + /// v128_t wasm_i32x4_extend_low_i16x8 (v128_t a) + /// i32x4.extend_low_i16x8_s : [v128] -> [v128] + /// [Intrinsic] public static Vector128 SignExtendWideningLower(Vector128 value) => SignExtendWideningLower(value); - /// i64x2.extend_low_i32x4_s + /// + /// v128_t wasm_i64x2_extend_low_i32x4 (v128_t a) + /// i64x2.extend_low_i32x4_s : [v128] -> [v128] + /// [Intrinsic] public static Vector128 SignExtendWideningLower(Vector128 value) => SignExtendWideningLower(value); - /// i64x2.extend_low_i32x4_s + /// + /// v128_t wasm_i64x2_extend_low_i32x4 (v128_t a) + /// i64x2.extend_low_i32x4_s : [v128] -> [v128] + /// [Intrinsic] public static Vector128 SignExtendWideningLower(Vector128 value) => SignExtendWideningLower(value); - /// i16x8.extend_high_i8x16_s + /// + /// v128_t wasm_i16x8_extend_high_i8x16 (v128_t a) + /// i16x8.extend_high_i8x16_s : [v128] -> [v128] + /// [Intrinsic] public static Vector128 SignExtendWideningUpper(Vector128 value) => SignExtendWideningUpper(value); - /// i16x8.extend_high_i8x16_s + /// + /// v128_t wasm_i16x8_extend_high_i8x16 (v128_t a) + /// i16x8.extend_high_i8x16_s : [v128] -> [v128] + /// [Intrinsic] public static Vector128 SignExtendWideningUpper(Vector128 value) => SignExtendWideningUpper(value); - /// i32x4.extend_high_i16x8_s + /// + /// v128_t wasm_i32x4_extend_high_i16x8 (v128_t a) + /// i32x4.extend_high_i16x8_s : [v128] -> [v128] + /// [Intrinsic] public static Vector128 SignExtendWideningUpper(Vector128 value) => SignExtendWideningUpper(value); - /// i32x4.extend_high_i16x8_s + /// + /// v128_t wasm_i32x4_extend_high_i16x8 (v128_t a) + /// i32x4.extend_high_i16x8_s : [v128] -> [v128] + /// [Intrinsic] public static Vector128 SignExtendWideningUpper(Vector128 value) => SignExtendWideningUpper(value); - /// i64x2.extend_high_i32x4_s + /// + /// v128_t wasm_i64x2_extend_high_i32x4 (v128_t a) + /// i64x2.extend_high_i32x4_s : [v128] -> [v128] + /// [Intrinsic] public static Vector128 SignExtendWideningUpper(Vector128 value) => SignExtendWideningUpper(value); - /// i64x2.extend_high_i32x4_s + /// + /// v128_t wasm_i64x2_extend_high_i32x4 (v128_t a) + /// i64x2.extend_high_i32x4_s : [v128] -> [v128] + /// [Intrinsic] public static Vector128 SignExtendWideningUpper(Vector128 value) => SignExtendWideningUpper(value); - /// i16x8.extend_low_i8x16_u + /// + /// v128_t wasm_u16x8_extend_low_u8x16 (v128_t a) + /// i16x8.extend_low_i8x16_u : [v128] -> [v128] + /// [Intrinsic] public static Vector128 ZeroExtendWideningLower(Vector128 value) => ZeroExtendWideningLower(value); - /// i16x8.extend_low_i8x16_u + /// + /// v128_t wasm_u16x8_extend_low_u8x16 (v128_t a) + /// i16x8.extend_low_i8x16_u : [v128] -> [v128] + /// [Intrinsic] public static Vector128 ZeroExtendWideningLower(Vector128 value) => ZeroExtendWideningLower(value); - /// i32x4.extend_low_i16x8_u + /// + /// v128_t wasm_u32x4_extend_low_u16x8 (v128_t a) + /// i32x4.extend_low_i16x8_u : [v128] -> [v128] + /// [Intrinsic] public static Vector128 ZeroExtendWideningLower(Vector128 value) => ZeroExtendWideningLower(value); - /// i32x4.extend_low_i16x8_u + /// + /// v128_t wasm_u32x4_extend_low_u16x8 (v128_t a) + /// i32x4.extend_low_i16x8_u : [v128] -> [v128] + /// [Intrinsic] public static Vector128 ZeroExtendWideningLower(Vector128 value) => ZeroExtendWideningLower(value); - /// i64x2.extend_low_i32x4_u + /// + /// v128_t wasm_u64x2_extend_low_u32x4 (v128_t a) + /// i64x2.extend_low_i32x4_u : [v128] -> [v128] + /// [Intrinsic] public static Vector128 ZeroExtendWideningLower(Vector128 value) => ZeroExtendWideningLower(value); - /// i64x2.extend_low_i32x4_u + /// + /// v128_t wasm_u64x2_extend_low_u32x4 (v128_t a) + /// i64x2.extend_low_i32x4_u : [v128] -> [v128] + /// [Intrinsic] public static Vector128 ZeroExtendWideningLower(Vector128 value) => ZeroExtendWideningLower(value); - /// i16x8.extend_high_i8x16_u + /// + /// v128_t wasm_u16x8_extend_high_u8x16 (v128_t a) + /// i16x8.extend_high_i8x16_u : [v128] -> [v128] + /// [Intrinsic] public static Vector128 ZeroExtendWideningUpper(Vector128 value) => ZeroExtendWideningUpper(value); - /// i16x8.extend_high_i8x16_u + /// + /// v128_t wasm_u16x8_extend_high_u8x16 (v128_t a) + /// i16x8.extend_high_i8x16_u : [v128] -> [v128] + /// [Intrinsic] public static Vector128 ZeroExtendWideningUpper(Vector128 value) => ZeroExtendWideningUpper(value); - /// i32x4.extend_high_i16x8_u + /// + /// v128_t wasm_u32x4_extend_high_u16x8 (v128_t a) + /// i32x4.extend_high_i16x8_u : [v128] -> [v128] + /// [Intrinsic] public static Vector128 ZeroExtendWideningUpper(Vector128 value) => ZeroExtendWideningUpper(value); - /// i32x4.extend_high_i16x8_u + /// + /// v128_t wasm_u32x4_extend_high_u16x8 (v128_t a) + /// i32x4.extend_high_i16x8_u : [v128] -> [v128] + /// [Intrinsic] public static Vector128 ZeroExtendWideningUpper(Vector128 value) => ZeroExtendWideningUpper(value); - /// i64x2.extend_high_i32x4_u + /// + /// v128_t wasm_u64x2_extend_high_u32x4 (v128_t a) + /// i64x2.extend_high_i32x4_u : [v128] -> [v128] + /// [Intrinsic] public static Vector128 ZeroExtendWideningUpper(Vector128 value) => ZeroExtendWideningUpper(value); - /// i64x2.extend_high_i32x4_u + /// + /// v128_t wasm_u64x2_extend_high_u32x4 (v128_t a) + /// i64x2.extend_high_i32x4_u : [v128] -> [v128] + /// [Intrinsic] public static Vector128 ZeroExtendWideningUpper(Vector128 value) => ZeroExtendWideningUpper(value); } From 56120b21803a697cefb7a023c6749984a45f8a6c Mon Sep 17 00:00:00 2001 From: Tanner Gooding Date: Fri, 24 Jul 2026 11:59:25 -0700 Subject: [PATCH 2/2] Fix incorrect instruction annotations on WASM PackedSimd doc comments The unsigned i64x2 relative comparisons have no direct WASM instruction and are lowered as a signed comparison over sign-bit-flipped operands. Document the instruction that actually executes plus a caveat, matching how the Arm and x86 docs handle synthetic APIs, rather than naming an instruction that does not exist. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .../Runtime/Intrinsics/Wasm/PackedSimd.cs | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Wasm/PackedSimd.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Wasm/PackedSimd.cs index 7e222208e19a85..0ffe3d96f4fcc9 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Wasm/PackedSimd.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Wasm/PackedSimd.cs @@ -201,7 +201,7 @@ public abstract class PackedSimd [Intrinsic] public static Vector128 ReplaceScalar(Vector128 vector, [ConstantExpected(Max = (byte)(3))] byte imm, int value) => ReplaceScalar(vector, imm, value); // takes ImmLaneIdx4 /// - /// v128_t wasm_i32x4_replace_lane (v128_t a, int i, int32_t b) + /// v128_t wasm_u32x4_replace_lane (v128_t a, int i, uint32_t b) /// i32x4.replace_lane laneidx : [v128 i32] -> [v128] /// [Intrinsic] @@ -1782,7 +1782,8 @@ public abstract class PackedSimd [Intrinsic] public static Vector128 CompareLessThan(Vector128 left, Vector128 right) => CompareLessThan(left, right); /// - /// i64x2.lt_u : [v128 v128] -> [v128] + /// i64x2.lt_s : [v128 v128] -> [v128] + /// No unsigned i64x2 comparison instruction exists; the sign bit of each operand is flipped before the signed comparison. /// [Intrinsic] public static Vector128 CompareLessThan(Vector128 left, Vector128 right) => CompareLessThan(left, right); @@ -1854,7 +1855,8 @@ public abstract class PackedSimd [Intrinsic] public static Vector128 CompareLessThanOrEqual(Vector128 left, Vector128 right) => CompareLessThanOrEqual(left, right); /// - /// i64x2.le_u : [v128 v128] -> [v128] + /// i64x2.le_s : [v128 v128] -> [v128] + /// No unsigned i64x2 comparison instruction exists; the sign bit of each operand is flipped before the signed comparison. /// [Intrinsic] public static Vector128 CompareLessThanOrEqual(Vector128 left, Vector128 right) => CompareLessThanOrEqual(left, right); @@ -1926,7 +1928,8 @@ public abstract class PackedSimd [Intrinsic] public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) => CompareGreaterThan(left, right); /// - /// i64x2.gt_u : [v128 v128] -> [v128] + /// i64x2.gt_s : [v128 v128] -> [v128] + /// No unsigned i64x2 comparison instruction exists; the sign bit of each operand is flipped before the signed comparison. /// [Intrinsic] public static Vector128 CompareGreaterThan(Vector128 left, Vector128 right) => CompareGreaterThan(left, right); @@ -1992,14 +1995,14 @@ public abstract class PackedSimd [Intrinsic] public static Vector128 CompareGreaterThanOrEqual(Vector128 left, Vector128 right) => CompareGreaterThanOrEqual(left, right); /// - /// v128_t wasm_i32x4_ge (v128_t a, v128_t b) - /// i32x4.ge_s : [v128 v128] -> [v128] + /// v128_t wasm_i64x2_ge (v128_t a, v128_t b) + /// i64x2.ge_s : [v128 v128] -> [v128] /// [Intrinsic] public static Vector128 CompareGreaterThanOrEqual(Vector128 left, Vector128 right) => CompareGreaterThanOrEqual(left, right); /// - /// v128_t wasm_i64x2_ge (v128_t a, v128_t b) /// i64x2.ge_s : [v128 v128] -> [v128] + /// No unsigned i64x2 comparison instruction exists; the sign bit of each operand is flipped before the signed comparison. /// [Intrinsic] public static Vector128 CompareGreaterThanOrEqual(Vector128 left, Vector128 right) => CompareGreaterThanOrEqual(left, right); @@ -2200,8 +2203,8 @@ public abstract class PackedSimd [Intrinsic] public static unsafe Vector128 LoadScalarAndSplatVector128(ulong* address) => LoadScalarAndSplatVector128(address); /// - /// v128_t wasm_v128_load64_splat (const void *mem) - /// v128.load64_splat memarg : [i32] -> [v128] + /// v128_t wasm_v128_load32_splat (const void *mem) + /// v128.load32_splat memarg : [i32] -> [v128] /// [Intrinsic] public static unsafe Vector128 LoadScalarAndSplatVector128(float* address) => LoadScalarAndSplatVector128(address); @@ -2212,14 +2215,14 @@ public abstract class PackedSimd [Intrinsic] public static unsafe Vector128 LoadScalarAndSplatVector128(double* address) => LoadScalarAndSplatVector128(address); /// - /// v128_t wasm_v128_load64_splat (const void *mem) - /// v128.load64_splat memarg : [i32] -> [v128] + /// v128_t wasm_v128_load32_splat (const void *mem) + /// v128.load32_splat memarg : [i32] -> [v128] /// [Intrinsic] public static unsafe Vector128 LoadScalarAndSplatVector128(nint* address) => LoadScalarAndSplatVector128(address); /// - /// v128_t wasm_v128_load64_splat (const void *mem) - /// v128.load64_splat memarg : [i32] -> [v128] + /// v128_t wasm_v128_load32_splat (const void *mem) + /// v128.load32_splat memarg : [i32] -> [v128] /// [Intrinsic] public static unsafe Vector128 LoadScalarAndSplatVector128(nuint* address) => LoadScalarAndSplatVector128(address);