From ff93898e0a6f7df75fce2f023dfe9039de702dde Mon Sep 17 00:00:00 2001 From: Egor Chesakov Date: Fri, 7 Feb 2020 12:06:36 -0800 Subject: [PATCH] Add "MaxAcross" in AdvSimd.cs AdvSimd.PlatformNotSupported.cs --- .../Arm/AdvSimd.PlatformNotSupported.cs | 66 +++++++++++++++++++ .../System/Runtime/Intrinsics/Arm/AdvSimd.cs | 66 +++++++++++++++++++ 2 files changed, 132 insertions(+) diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/AdvSimd.PlatformNotSupported.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/AdvSimd.PlatformNotSupported.cs index 4127725a70279..b3da59dd4a6a8 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/AdvSimd.PlatformNotSupported.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/AdvSimd.PlatformNotSupported.cs @@ -526,6 +526,72 @@ internal Arm64() { } /// public static Vector128 Max(Vector128 left, Vector128 right) { throw new PlatformNotSupportedException(); } + /// + /// uint8_t vmaxv_u8 (uint8x8_t a) + /// A64: UMAXV Bd, Vn.8B + /// + public static Vector64 MaxAcross(Vector64 value) { throw new PlatformNotSupportedException(); } + + /// + /// int16_t vmaxv_s16 (int16x4_t a) + /// A64: SMAXV Hd, Vn.4H + /// + public static Vector64 MaxAcross(Vector64 value) { throw new PlatformNotSupportedException(); } + + /// + /// int8_t vmaxv_s8 (int8x8_t a) + /// A64: SMAXV Bd, Vn.8B + /// + public static Vector64 MaxAcross(Vector64 value) { throw new PlatformNotSupportedException(); } + + /// + /// uint16_t vmaxv_u16 (uint16x4_t a) + /// A64: UMAXV Hd, Vn.4H + /// + public static Vector64 MaxAcross(Vector64 value) { throw new PlatformNotSupportedException(); } + + /// + /// uint8_t vmaxvq_u8 (uint8x16_t a) + /// A64: UMAXV Bd, Vn.16B + /// + public static Vector64 MaxAcross(Vector128 value) { throw new PlatformNotSupportedException(); } + + /// + /// int16_t vmaxvq_s16 (int16x8_t a) + /// A64: SMAXV Hd, Vn.8H + /// + public static Vector64 MaxAcross(Vector128 value) { throw new PlatformNotSupportedException(); } + + /// + /// int32_t vmaxvq_s32 (int32x4_t a) + /// A64: SMAXV Sd, Vn.4S + /// + public static Vector64 MaxAcross(Vector128 value) { throw new PlatformNotSupportedException(); } + + /// + /// int8_t vmaxvq_s8 (int8x16_t a) + /// A64: SMAXV Bd, Vn.16B + /// + public static Vector64 MaxAcross(Vector128 value) { throw new PlatformNotSupportedException(); } + + /// + /// float32_t vmaxvq_f32 (float32x4_t a) + /// A64: FMAXV Sd, Vn.4S + /// + public static Vector64 MaxAcross(Vector128 value) { throw new PlatformNotSupportedException(); } + + /// + /// uint16_t vmaxvq_u16 (uint16x8_t a) + /// A64: UMAXV Hd, Vn.8H + /// + public static Vector64 MaxAcross(Vector128 value) { throw new PlatformNotSupportedException(); } + + /// + /// uint32_t vmaxvq_u32 (uint32x4_t a) + /// A64: UMAXV Sd, Vn.4S + /// + public static Vector64 MaxAcross(Vector128 value) { throw new PlatformNotSupportedException(); } + /// /// float64x1_t vmax_f64 (float64x1_t a, float64x1_t b) /// A64: FMAX Dd, Dn, Dm diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/AdvSimd.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/AdvSimd.cs index d1b79464ed80e..0e8512e05c642 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/AdvSimd.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/AdvSimd.cs @@ -528,6 +528,72 @@ internal Arm64() { } /// public static Vector128 Max(Vector128 left, Vector128 right) => Max(left, right); + /// + /// uint8_t vmaxv_u8 (uint8x8_t a) + /// A64: UMAXV Bd, Vn.8B + /// + public static Vector64 MaxAcross(Vector64 value) => MaxAcross(value); + + /// + /// int16_t vmaxv_s16 (int16x4_t a) + /// A64: SMAXV Hd, Vn.4H + /// + public static Vector64 MaxAcross(Vector64 value) => MaxAcross(value); + + /// + /// int8_t vmaxv_s8 (int8x8_t a) + /// A64: SMAXV Bd, Vn.8B + /// + public static Vector64 MaxAcross(Vector64 value) => MaxAcross(value); + + /// + /// uint16_t vmaxv_u16 (uint16x4_t a) + /// A64: UMAXV Hd, Vn.4H + /// + public static Vector64 MaxAcross(Vector64 value) => MaxAcross(value); + + /// + /// uint8_t vmaxvq_u8 (uint8x16_t a) + /// A64: UMAXV Bd, Vn.16B + /// + public static Vector64 MaxAcross(Vector128 value) => MaxAcross(value); + + /// + /// int16_t vmaxvq_s16 (int16x8_t a) + /// A64: SMAXV Hd, Vn.8H + /// + public static Vector64 MaxAcross(Vector128 value) => MaxAcross(value); + + /// + /// int32_t vmaxvq_s32 (int32x4_t a) + /// A64: SMAXV Sd, Vn.4S + /// + public static Vector64 MaxAcross(Vector128 value) => MaxAcross(value); + + /// + /// int8_t vmaxvq_s8 (int8x16_t a) + /// A64: SMAXV Bd, Vn.16B + /// + public static Vector64 MaxAcross(Vector128 value) => MaxAcross(value); + + /// + /// float32_t vmaxvq_f32 (float32x4_t a) + /// A64: FMAXV Sd, Vn.4S + /// + public static Vector64 MaxAcross(Vector128 value) => MaxAcross(value); + + /// + /// uint16_t vmaxvq_u16 (uint16x8_t a) + /// A64: UMAXV Hd, Vn.8H + /// + public static Vector64 MaxAcross(Vector128 value) => MaxAcross(value); + + /// + /// uint32_t vmaxvq_u32 (uint32x4_t a) + /// A64: UMAXV Sd, Vn.4S + /// + public static Vector64 MaxAcross(Vector128 value) => MaxAcross(value); + /// /// float64x1_t vmax_f64 (float64x1_t a, float64x1_t b) /// A64: FMAX Dd, Dn, Dm