`arm`: use `simd_fmin` and `simd_fmax`
diff --git a/library/stdarch/crates/core_arch/src/arm_shared/neon/generated.rs b/library/stdarch/crates/core_arch/src/arm_shared/neon/generated.rs
index b61d577..40ccd7e 100644
--- a/library/stdarch/crates/core_arch/src/arm_shared/neon/generated.rs
+++ b/library/stdarch/crates/core_arch/src/arm_shared/neon/generated.rs
@@ -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)"]
diff --git a/library/stdarch/crates/stdarch-gen-arm/spec/neon/arm_shared.spec.yml b/library/stdarch/crates/stdarch-gen-arm/spec/neon/arm_shared.spec.yml
index c836a47..814d4d9 100644
--- a/library/stdarch/crates/stdarch-gen-arm/spec/neon/arm_shared.spec.yml
+++ b/library/stdarch/crates/stdarch-gen-arm/spec/neon/arm_shared.spec.yml
@@ -7223,13 +7223,7 @@
- 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 @@
- 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 @@
- 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 @@
- 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