arm: use simd_fmin and simd_fmax

This commit is contained in:
Folkert de Vries 2025-07-12 16:49:52 +02:00
parent 441824cfca
commit 72afae5fd6
No known key found for this signature in database
GPG key ID: 1F17F6FFD112B97C
2 changed files with 12 additions and 100 deletions

View file

@ -27942,15 +27942,7 @@ pub fn vmaxq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
#[target_feature(enable = "neon,fp16")]
#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
pub fn vmaxnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
unsafe extern "unadjusted" {
#[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxnm.v4f16")]
#[cfg_attr(
any(target_arch = "aarch64", target_arch = "arm64ec"),
link_name = "llvm.aarch64.neon.fmaxnm.v4f16"
)]
fn _vmaxnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
}
unsafe { _vmaxnm_f16(a, b) }
unsafe { simd_fmax(a, b) }
}
#[doc = "Floating-point Maximum Number (vector)"]
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmq_f16)"]
@ -27964,15 +27956,7 @@ pub fn vmaxnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
#[target_feature(enable = "neon,fp16")]
#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
pub fn vmaxnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
unsafe extern "unadjusted" {
#[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxnm.v8f16")]
#[cfg_attr(
any(target_arch = "aarch64", target_arch = "arm64ec"),
link_name = "llvm.aarch64.neon.fmaxnm.v8f16"
)]
fn _vmaxnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
}
unsafe { _vmaxnmq_f16(a, b) }
unsafe { simd_fmax(a, b) }
}
#[doc = "Floating-point Maximum Number (vector)"]
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnm_f32)"]
@ -27993,15 +27977,7 @@ pub fn vmaxnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
)]
pub fn vmaxnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
unsafe extern "unadjusted" {
#[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxnm.v2f32")]
#[cfg_attr(
any(target_arch = "aarch64", target_arch = "arm64ec"),
link_name = "llvm.aarch64.neon.fmaxnm.v2f32"
)]
fn _vmaxnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
}
unsafe { _vmaxnm_f32(a, b) }
unsafe { simd_fmax(a, b) }
}
#[doc = "Floating-point Maximum Number (vector)"]
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmq_f32)"]
@ -28022,15 +27998,7 @@ pub fn vmaxnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
)]
pub fn vmaxnmq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
unsafe extern "unadjusted" {
#[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxnm.v4f32")]
#[cfg_attr(
any(target_arch = "aarch64", target_arch = "arm64ec"),
link_name = "llvm.aarch64.neon.fmaxnm.v4f32"
)]
fn _vmaxnmq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t;
}
unsafe { _vmaxnmq_f32(a, b) }
unsafe { simd_fmax(a, b) }
}
#[doc = "Minimum (vector)"]
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_f16)"]
@ -28434,15 +28402,7 @@ pub fn vminq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
#[target_feature(enable = "neon,fp16")]
#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
pub fn vminnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
unsafe extern "unadjusted" {
#[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminnm.v4f16")]
#[cfg_attr(
any(target_arch = "aarch64", target_arch = "arm64ec"),
link_name = "llvm.aarch64.neon.fminnm.v4f16"
)]
fn _vminnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
}
unsafe { _vminnm_f16(a, b) }
unsafe { simd_fmin(a, b) }
}
#[doc = "Floating-point Minimum Number (vector)"]
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmq_f16)"]
@ -28456,15 +28416,7 @@ pub fn vminnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
#[target_feature(enable = "neon,fp16")]
#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
pub fn vminnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
unsafe extern "unadjusted" {
#[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminnm.v8f16")]
#[cfg_attr(
any(target_arch = "aarch64", target_arch = "arm64ec"),
link_name = "llvm.aarch64.neon.fminnm.v8f16"
)]
fn _vminnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
}
unsafe { _vminnmq_f16(a, b) }
unsafe { simd_fmin(a, b) }
}
#[doc = "Floating-point Minimum Number (vector)"]
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnm_f32)"]
@ -28485,15 +28437,7 @@ pub fn vminnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
)]
pub fn vminnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
unsafe extern "unadjusted" {
#[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminnm.v2f32")]
#[cfg_attr(
any(target_arch = "aarch64", target_arch = "arm64ec"),
link_name = "llvm.aarch64.neon.fminnm.v2f32"
)]
fn _vminnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
}
unsafe { _vminnm_f32(a, b) }
unsafe { simd_fmin(a, b) }
}
#[doc = "Floating-point Minimum Number (vector)"]
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmq_f32)"]
@ -28514,15 +28458,7 @@ pub fn vminnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
)]
pub fn vminnmq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
unsafe extern "unadjusted" {
#[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminnm.v4f32")]
#[cfg_attr(
any(target_arch = "aarch64", target_arch = "arm64ec"),
link_name = "llvm.aarch64.neon.fminnm.v4f32"
)]
fn _vminnmq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t;
}
unsafe { _vminnmq_f32(a, b) }
unsafe { simd_fmin(a, b) }
}
#[doc = "Floating-point multiply-add to accumulator"]
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_f32)"]

View file

@ -7223,13 +7223,7 @@ intrinsics:
- float32x2_t
- float32x4_t
compose:
- LLVMLink:
name: "fmaxnm.{neon_type}"
links:
- link: "llvm.arm.neon.vmaxnm.{neon_type}"
arch: arm
- link: "llvm.aarch64.neon.fmaxnm.{neon_type}"
arch: aarch64,arm64ec
- FnCall: [simd_fmax, [a, b]]
- name: "vmaxnm{neon_type.no}"
@ -7247,13 +7241,7 @@ intrinsics:
- float16x4_t
- float16x8_t
compose:
- LLVMLink:
name: "fmaxnm.{neon_type}"
links:
- link: "llvm.arm.neon.vmaxnm.{neon_type}"
arch: arm
- link: "llvm.aarch64.neon.fmaxnm.{neon_type}"
arch: aarch64,arm64ec
- FnCall: [simd_fmax, [a, b]]
- name: "vminnm{neon_type.no}"
@ -7271,13 +7259,7 @@ intrinsics:
- float16x4_t
- float16x8_t
compose:
- LLVMLink:
name: "fminnm.{neon_type}"
links:
- link: "llvm.arm.neon.vminnm.{neon_type}"
arch: arm
- link: "llvm.aarch64.neon.fminnm.{neon_type}"
arch: aarch64,arm64ec
- FnCall: [simd_fmin, [a, b]]
- name: "vmin{neon_type.no}"
@ -7388,13 +7370,7 @@ intrinsics:
- float32x2_t
- float32x4_t
compose:
- LLVMLink:
name: "fminnm.{neon_type}"
links:
- link: "llvm.arm.neon.vminnm.{neon_type}"
arch: arm
- link: "llvm.aarch64.neon.fminnm.{neon_type}"
arch: aarch64,arm64ec
- FnCall: [simd_fmin, [a, b]]
- name: "vpadd{neon_type.no}"
doc: Floating-point add pairwise