Skip to content

Commit e2df07a

Browse files
committed
arm: use simd_fmin and simd_fmax
1 parent dfa2c91 commit e2df07a

File tree

2 files changed

+12
-100
lines changed

2 files changed

+12
-100
lines changed

crates/core_arch/src/arm_shared/neon/generated.rs

Lines changed: 8 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -27942,15 +27942,7 @@ pub fn vmaxq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
2794227942
#[target_feature(enable = "neon,fp16")]
2794327943
#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
2794427944
pub fn vmaxnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
27945-
unsafe extern "unadjusted" {
27946-
#[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxnm.v4f16")]
27947-
#[cfg_attr(
27948-
any(target_arch = "aarch64", target_arch = "arm64ec"),
27949-
link_name = "llvm.aarch64.neon.fmaxnm.v4f16"
27950-
)]
27951-
fn _vmaxnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
27952-
}
27953-
unsafe { _vmaxnm_f16(a, b) }
27945+
unsafe { simd_fmax(a, b) }
2795427946
}
2795527947
#[doc = "Floating-point Maximum Number (vector)"]
2795627948
#[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 {
2796427956
#[target_feature(enable = "neon,fp16")]
2796527957
#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
2796627958
pub fn vmaxnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
27967-
unsafe extern "unadjusted" {
27968-
#[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxnm.v8f16")]
27969-
#[cfg_attr(
27970-
any(target_arch = "aarch64", target_arch = "arm64ec"),
27971-
link_name = "llvm.aarch64.neon.fmaxnm.v8f16"
27972-
)]
27973-
fn _vmaxnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
27974-
}
27975-
unsafe { _vmaxnmq_f16(a, b) }
27959+
unsafe { simd_fmax(a, b) }
2797627960
}
2797727961
#[doc = "Floating-point Maximum Number (vector)"]
2797827962
#[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 {
2799327977
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2799427978
)]
2799527979
pub fn vmaxnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
27996-
unsafe extern "unadjusted" {
27997-
#[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxnm.v2f32")]
27998-
#[cfg_attr(
27999-
any(target_arch = "aarch64", target_arch = "arm64ec"),
28000-
link_name = "llvm.aarch64.neon.fmaxnm.v2f32"
28001-
)]
28002-
fn _vmaxnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
28003-
}
28004-
unsafe { _vmaxnm_f32(a, b) }
27980+
unsafe { simd_fmax(a, b) }
2800527981
}
2800627982
#[doc = "Floating-point Maximum Number (vector)"]
2800727983
#[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 {
2802227998
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2802327999
)]
2802428000
pub fn vmaxnmq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
28025-
unsafe extern "unadjusted" {
28026-
#[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxnm.v4f32")]
28027-
#[cfg_attr(
28028-
any(target_arch = "aarch64", target_arch = "arm64ec"),
28029-
link_name = "llvm.aarch64.neon.fmaxnm.v4f32"
28030-
)]
28031-
fn _vmaxnmq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t;
28032-
}
28033-
unsafe { _vmaxnmq_f32(a, b) }
28001+
unsafe { simd_fmax(a, b) }
2803428002
}
2803528003
#[doc = "Minimum (vector)"]
2803628004
#[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 {
2843428402
#[target_feature(enable = "neon,fp16")]
2843528403
#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
2843628404
pub fn vminnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
28437-
unsafe extern "unadjusted" {
28438-
#[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminnm.v4f16")]
28439-
#[cfg_attr(
28440-
any(target_arch = "aarch64", target_arch = "arm64ec"),
28441-
link_name = "llvm.aarch64.neon.fminnm.v4f16"
28442-
)]
28443-
fn _vminnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
28444-
}
28445-
unsafe { _vminnm_f16(a, b) }
28405+
unsafe { simd_fmin(a, b) }
2844628406
}
2844728407
#[doc = "Floating-point Minimum Number (vector)"]
2844828408
#[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 {
2845628416
#[target_feature(enable = "neon,fp16")]
2845728417
#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
2845828418
pub fn vminnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
28459-
unsafe extern "unadjusted" {
28460-
#[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminnm.v8f16")]
28461-
#[cfg_attr(
28462-
any(target_arch = "aarch64", target_arch = "arm64ec"),
28463-
link_name = "llvm.aarch64.neon.fminnm.v8f16"
28464-
)]
28465-
fn _vminnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
28466-
}
28467-
unsafe { _vminnmq_f16(a, b) }
28419+
unsafe { simd_fmin(a, b) }
2846828420
}
2846928421
#[doc = "Floating-point Minimum Number (vector)"]
2847028422
#[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 {
2848528437
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2848628438
)]
2848728439
pub fn vminnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
28488-
unsafe extern "unadjusted" {
28489-
#[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminnm.v2f32")]
28490-
#[cfg_attr(
28491-
any(target_arch = "aarch64", target_arch = "arm64ec"),
28492-
link_name = "llvm.aarch64.neon.fminnm.v2f32"
28493-
)]
28494-
fn _vminnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
28495-
}
28496-
unsafe { _vminnm_f32(a, b) }
28440+
unsafe { simd_fmin(a, b) }
2849728441
}
2849828442
#[doc = "Floating-point Minimum Number (vector)"]
2849928443
#[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 {
2851428458
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2851528459
)]
2851628460
pub fn vminnmq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
28517-
unsafe extern "unadjusted" {
28518-
#[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminnm.v4f32")]
28519-
#[cfg_attr(
28520-
any(target_arch = "aarch64", target_arch = "arm64ec"),
28521-
link_name = "llvm.aarch64.neon.fminnm.v4f32"
28522-
)]
28523-
fn _vminnmq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t;
28524-
}
28525-
unsafe { _vminnmq_f32(a, b) }
28461+
unsafe { simd_fmin(a, b) }
2852628462
}
2852728463
#[doc = "Floating-point multiply-add to accumulator"]
2852828464
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_f32)"]

crates/stdarch-gen-arm/spec/neon/arm_shared.spec.yml

Lines changed: 4 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -7223,13 +7223,7 @@ intrinsics:
72237223
- float32x2_t
72247224
- float32x4_t
72257225
compose:
7226-
- LLVMLink:
7227-
name: "fmaxnm.{neon_type}"
7228-
links:
7229-
- link: "llvm.arm.neon.vmaxnm.{neon_type}"
7230-
arch: arm
7231-
- link: "llvm.aarch64.neon.fmaxnm.{neon_type}"
7232-
arch: aarch64,arm64ec
7226+
- FnCall: [simd_fmax, [a, b]]
72337227

72347228

72357229
- name: "vmaxnm{neon_type.no}"
@@ -7247,13 +7241,7 @@ intrinsics:
72477241
- float16x4_t
72487242
- float16x8_t
72497243
compose:
7250-
- LLVMLink:
7251-
name: "fmaxnm.{neon_type}"
7252-
links:
7253-
- link: "llvm.arm.neon.vmaxnm.{neon_type}"
7254-
arch: arm
7255-
- link: "llvm.aarch64.neon.fmaxnm.{neon_type}"
7256-
arch: aarch64,arm64ec
7244+
- FnCall: [simd_fmax, [a, b]]
72577245

72587246

72597247
- name: "vminnm{neon_type.no}"
@@ -7271,13 +7259,7 @@ intrinsics:
72717259
- float16x4_t
72727260
- float16x8_t
72737261
compose:
7274-
- LLVMLink:
7275-
name: "fminnm.{neon_type}"
7276-
links:
7277-
- link: "llvm.arm.neon.vminnm.{neon_type}"
7278-
arch: arm
7279-
- link: "llvm.aarch64.neon.fminnm.{neon_type}"
7280-
arch: aarch64,arm64ec
7262+
- FnCall: [simd_fmin, [a, b]]
72817263

72827264

72837265
- name: "vmin{neon_type.no}"
@@ -7388,13 +7370,7 @@ intrinsics:
73887370
- float32x2_t
73897371
- float32x4_t
73907372
compose:
7391-
- LLVMLink:
7392-
name: "fminnm.{neon_type}"
7393-
links:
7394-
- link: "llvm.arm.neon.vminnm.{neon_type}"
7395-
arch: arm
7396-
- link: "llvm.aarch64.neon.fminnm.{neon_type}"
7397-
arch: aarch64,arm64ec
7373+
- FnCall: [simd_fmin, [a, b]]
73987374

73997375
- name: "vpadd{neon_type.no}"
74007376
doc: Floating-point add pairwise

0 commit comments

Comments
 (0)