From 74b5824a7823d7cde7d89c9cabfc4aca1150cb4f Mon Sep 17 00:00:00 2001 From: Egor Chesakov Date: Thu, 24 Oct 2019 18:38:38 -0700 Subject: [PATCH] Add AdvSimd.BitwiseSelect --- .../Arm/AdvSimd.PlatformNotSupported.cs | 140 ++++++++++++++++++ .../System/Runtime/Intrinsics/Arm/AdvSimd.cs | 140 ++++++++++++++++++ 2 files changed, 280 insertions(+) diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/AdvSimd.PlatformNotSupported.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/AdvSimd.PlatformNotSupported.cs index d360c6523235..8b0b0500a601 100644 --- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/AdvSimd.PlatformNotSupported.cs +++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/AdvSimd.PlatformNotSupported.cs @@ -549,6 +549,146 @@ internal Arm64() { } /// public static Vector128 AndNot(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + /// + /// uint8x8_t vbsl_u8 (uint8x8_t a, uint8x8_t b, uint8x8_t c) + /// A32: VBSL Dd, Dn, Dm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector64 BitwiseSelect(Vector64 select, Vector64 left, Vector64 right) { throw new PlatformNotSupportedException(); } + + // /// + // /// float64x1_t vbsl_f64 (float64x1_t a, float64x1_t b, float64x1_t c) + // /// A32: VBSL Dd, Dn, Dm + // /// A64: BSL Vd, Vn, Vm + // /// + // public static Vector64 BitwiseSelect(Vector64 select, Vector64 left, Vector64 right) { throw new PlatformNotSupportedException(); } + + /// + /// int16x4_t vbsl_s16 (int16x4_t a, int16x4_t b, int16x4_t c) + /// A32: VBSL Dd, Dn, Dm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector64 BitwiseSelect(Vector64 select, Vector64 left, Vector64 right) { throw new PlatformNotSupportedException(); } + + /// + /// int32x2_t vbsl_s32 (int32x2_t a, int32x2_t b, int32x2_t c) + /// A32: VBSL Dd, Dn, Dm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector64 BitwiseSelect(Vector64 select, Vector64 left, Vector64 right) { throw new PlatformNotSupportedException(); } + + // /// + // /// int64x1_t vbsl_s64 (int64x1_t a, int64x1_t b, int64x1_t c) + // /// A32: VBSL Dd, Dn, Dm + // /// A64: BSL Vd, Vn, Vm + // /// + // public static Vector64 BitwiseSelect(Vector64 select, Vector64 left, Vector64 right) { throw new PlatformNotSupportedException(); } + + /// + /// int8x8_t vbsl_s8 (int8x8_t a, int8x8_t b, int8x8_t c) + /// A32: VBSL Dd, Dn, Dm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector64 BitwiseSelect(Vector64 select, Vector64 left, Vector64 right) { throw new PlatformNotSupportedException(); } + + /// + /// float32x2_t vbsl_f32 (float32x2_t a, float32x2_t b, float32x2_t c) + /// A32: VBSL Dd, Dn, Dm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector64 BitwiseSelect(Vector64 select, Vector64 left, Vector64 right) { throw new PlatformNotSupportedException(); } + + /// + /// uint16x4_t vbsl_u16 (uint16x4_t a, uint16x4_t b, uint16x4_t c) + /// A32: VBSL Dd, Dn, Dm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector64 BitwiseSelect(Vector64 select, Vector64 left, Vector64 right) { throw new PlatformNotSupportedException(); } + + /// + /// uint32x2_t vbsl_u32 (uint32x2_t a, uint32x2_t b, uint32x2_t c) + /// A32: VBSL Dd, Dn, Dm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector64 BitwiseSelect(Vector64 select, Vector64 left, Vector64 right) { throw new PlatformNotSupportedException(); } + + // /// + // /// uint64x1_t vbsl_u64 (uint64x1_t a, uint64x1_t b, uint64x1_t c) + // /// A32: VBSL Dd, Dn, Dm + // /// A64: BSL Vd, Vn, Vm + // /// + // public static Vector64 BitwiseSelect(Vector64 select, Vector64 left, Vector64 right) { throw new PlatformNotSupportedException(); } + + /// + /// uint8x16_t vbslq_u8 (uint8x16_t a, uint8x16_t b, uint8x16_t c) + /// A32: VBSL Qd, Qn, Qm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector128 BitwiseSelect(Vector128 select, Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + + /// + /// float64x2_t vbslq_f64 (float64x2_t a, float64x2_t b, float64x2_t c) + /// A32: VBSL Qd, Qn, Qm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector128 BitwiseSelect(Vector128 select, Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + + /// + /// int16x8_t vbslq_s16 (int16x8_t a, int16x8_t b, int16x8_t c) + /// A32: VBSL Qd, Qn, Qm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector128 BitwiseSelect(Vector128 select, Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + + /// + /// int32x4_t vbslq_s32 (int32x4_t a, int32x4_t b, int32x4_t c) + /// A32: VBSL Qd, Qn, Qm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector128 BitwiseSelect(Vector128 select, Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + + /// + /// int64x2_t vbslq_s64 (int64x2_t a, int64x2_t b, int64x2_t c) + /// A32: VBSL Qd, Qn, Qm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector128 BitwiseSelect(Vector128 select, Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + + /// + /// int8x16_t vbslq_s8 (int8x16_t a, int8x16_t b, int8x16_t c) + /// A32: VBSL Qd, Qn, Qm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector128 BitwiseSelect(Vector128 select, Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + + /// + /// float32x4_t vbslq_f32 (float32x4_t a, float32x4_t b, float32x4_t c) + /// A32: VBSL Qd, Qn, Qm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector128 BitwiseSelect(Vector128 select, Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + + /// + /// uint16x8_t vbslq_u16 (uint16x8_t a, uint16x8_t b, uint16x8_t c) + /// A32: VBSL Qd, Qn, Qm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector128 BitwiseSelect(Vector128 select, Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + + /// + /// uint32x4_t vbslq_u32 (uint32x4_t a, uint32x4_t b, uint32x4_t c) + /// A32: VBSL Qd, Qn, Qm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector128 BitwiseSelect(Vector128 select, Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + + /// + /// uint64x2_t vbslq_u64 (uint64x2_t a, uint64x2_t b, uint64x2_t c) + /// A32: VBSL Qd, Qn, Qm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector128 BitwiseSelect(Vector128 select, Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + /// /// int8x8_t vcls_s8 (int8x8_t a) /// A32: VCLS Dd, Dm diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/AdvSimd.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/AdvSimd.cs index b62be645b312..942ce8b2fa60 100644 --- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/AdvSimd.cs +++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/AdvSimd.cs @@ -551,6 +551,146 @@ internal Arm64() { } /// public static Vector128 AndNot(Vector128 left, Vector128 right) => AndNot(left, right); + /// + /// uint8x8_t vbsl_u8 (uint8x8_t a, uint8x8_t b, uint8x8_t c) + /// A32: VBSL Dd, Dn, Dm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector64 BitwiseSelect(Vector64 select, Vector64 left, Vector64 right) => BitwiseSelect(select, left, right); + + // /// + // /// float64x1_t vbsl_f64 (float64x1_t a, float64x1_t b, float64x1_t c) + // /// A32: VBSL Dd, Dn, Dm + // /// A64: BSL Vd, Vn, Vm + // /// + // public static Vector64 BitwiseSelect(Vector64 select, Vector64 left, Vector64 right) => BitwiseSelect(select, left, right); + + /// + /// int16x4_t vbsl_s16 (int16x4_t a, int16x4_t b, int16x4_t c) + /// A32: VBSL Dd, Dn, Dm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector64 BitwiseSelect(Vector64 select, Vector64 left, Vector64 right) => BitwiseSelect(select, left, right); + + /// + /// int32x2_t vbsl_s32 (int32x2_t a, int32x2_t b, int32x2_t c) + /// A32: VBSL Dd, Dn, Dm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector64 BitwiseSelect(Vector64 select, Vector64 left, Vector64 right) => BitwiseSelect(select, left, right); + + // /// + // /// int64x1_t vbsl_s64 (int64x1_t a, int64x1_t b, int64x1_t c) + // /// A32: VBSL Dd, Dn, Dm + // /// A64: BSL Vd, Vn, Vm + // /// + // public static Vector64 BitwiseSelect(Vector64 select, Vector64 left, Vector64 right) => BitwiseSelect(select, left, right); + + /// + /// int8x8_t vbsl_s8 (int8x8_t a, int8x8_t b, int8x8_t c) + /// A32: VBSL Dd, Dn, Dm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector64 BitwiseSelect(Vector64 select, Vector64 left, Vector64 right) => BitwiseSelect(select, left, right); + + /// + /// float32x2_t vbsl_f32 (float32x2_t a, float32x2_t b, float32x2_t c) + /// A32: VBSL Dd, Dn, Dm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector64 BitwiseSelect(Vector64 select, Vector64 left, Vector64 right) => BitwiseSelect(select, left, right); + + /// + /// uint16x4_t vbsl_u16 (uint16x4_t a, uint16x4_t b, uint16x4_t c) + /// A32: VBSL Dd, Dn, Dm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector64 BitwiseSelect(Vector64 select, Vector64 left, Vector64 right) => BitwiseSelect(select, left, right); + + /// + /// uint32x2_t vbsl_u32 (uint32x2_t a, uint32x2_t b, uint32x2_t c) + /// A32: VBSL Dd, Dn, Dm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector64 BitwiseSelect(Vector64 select, Vector64 left, Vector64 right) => BitwiseSelect(select, left, right); + + // /// + // /// uint64x1_t vbsl_u64 (uint64x1_t a, uint64x1_t b, uint64x1_t c) + // /// A32: VBSL Dd, Dn, Dm + // /// A64: BSL Vd, Vn, Vm + // /// + // public static Vector64 BitwiseSelect(Vector64 select, Vector64 left, Vector64 right) => BitwiseSelect(select, left, right); + + /// + /// uint8x16_t vbslq_u8 (uint8x16_t a, uint8x16_t b, uint8x16_t c) + /// A32: VBSL Qd, Qn, Qm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector128 BitwiseSelect(Vector128 select, Vector128 left, Vector128 right) => BitwiseSelect(select, left, right); + + /// + /// float64x2_t vbslq_f64 (float64x2_t a, float64x2_t b, float64x2_t c) + /// A32: VBSL Qd, Qn, Qm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector128 BitwiseSelect(Vector128 select, Vector128 left, Vector128 right) => BitwiseSelect(select, left, right); + + /// + /// int16x8_t vbslq_s16 (int16x8_t a, int16x8_t b, int16x8_t c) + /// A32: VBSL Qd, Qn, Qm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector128 BitwiseSelect(Vector128 select, Vector128 left, Vector128 right) => BitwiseSelect(select, left, right); + + /// + /// int32x4_t vbslq_s32 (int32x4_t a, int32x4_t b, int32x4_t c) + /// A32: VBSL Qd, Qn, Qm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector128 BitwiseSelect(Vector128 select, Vector128 left, Vector128 right) => BitwiseSelect(select, left, right); + + /// + /// int64x2_t vbslq_s64 (int64x2_t a, int64x2_t b, int64x2_t c) + /// A32: VBSL Qd, Qn, Qm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector128 BitwiseSelect(Vector128 select, Vector128 left, Vector128 right) => BitwiseSelect(select, left, right); + + /// + /// int8x16_t vbslq_s8 (int8x16_t a, int8x16_t b, int8x16_t c) + /// A32: VBSL Qd, Qn, Qm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector128 BitwiseSelect(Vector128 select, Vector128 left, Vector128 right) => BitwiseSelect(select, left, right); + + /// + /// float32x4_t vbslq_f32 (float32x4_t a, float32x4_t b, float32x4_t c) + /// A32: VBSL Qd, Qn, Qm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector128 BitwiseSelect(Vector128 select, Vector128 left, Vector128 right) => BitwiseSelect(select, left, right); + + /// + /// uint16x8_t vbslq_u16 (uint16x8_t a, uint16x8_t b, uint16x8_t c) + /// A32: VBSL Qd, Qn, Qm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector128 BitwiseSelect(Vector128 select, Vector128 left, Vector128 right) => BitwiseSelect(select, left, right); + + /// + /// uint32x4_t vbslq_u32 (uint32x4_t a, uint32x4_t b, uint32x4_t c) + /// A32: VBSL Qd, Qn, Qm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector128 BitwiseSelect(Vector128 select, Vector128 left, Vector128 right) => BitwiseSelect(select, left, right); + + /// + /// uint64x2_t vbslq_u64 (uint64x2_t a, uint64x2_t b, uint64x2_t c) + /// A32: VBSL Qd, Qn, Qm + /// A64: BSL Vd, Vn, Vm + /// + public static Vector128 BitwiseSelect(Vector128 select, Vector128 left, Vector128 right) => BitwiseSelect(select, left, right); + /// /// int8x8_t vcls_s8 (int8x8_t a) /// A32: VCLS Dd, Dm