aarch64: use simd_fmin and simd_fmax
This commit is contained in:
@@ -13229,14 +13229,7 @@ pub fn vmaxh_f16(a: f16, b: f16) -> f16 {
|
|||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
#[cfg_attr(test, assert_instr(fmaxnm))]
|
#[cfg_attr(test, assert_instr(fmaxnm))]
|
||||||
pub fn vmaxnm_f64(a: float64x1_t, b: float64x1_t) -> float64x1_t {
|
pub fn vmaxnm_f64(a: float64x1_t, b: float64x1_t) -> float64x1_t {
|
||||||
unsafe extern "unadjusted" {
|
unsafe { simd_fmax(a, b) }
|
||||||
#[cfg_attr(
|
|
||||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
|
||||||
link_name = "llvm.aarch64.neon.fmaxnm.v1f64"
|
|
||||||
)]
|
|
||||||
fn _vmaxnm_f64(a: float64x1_t, b: float64x1_t) -> float64x1_t;
|
|
||||||
}
|
|
||||||
unsafe { _vmaxnm_f64(a, b) }
|
|
||||||
}
|
}
|
||||||
#[doc = "Floating-point Maximum Number (vector)"]
|
#[doc = "Floating-point Maximum Number (vector)"]
|
||||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmq_f64)"]
|
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmq_f64)"]
|
||||||
@@ -13245,14 +13238,7 @@ pub fn vmaxnm_f64(a: float64x1_t, b: float64x1_t) -> float64x1_t {
|
|||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
#[cfg_attr(test, assert_instr(fmaxnm))]
|
#[cfg_attr(test, assert_instr(fmaxnm))]
|
||||||
pub fn vmaxnmq_f64(a: float64x2_t, b: float64x2_t) -> float64x2_t {
|
pub fn vmaxnmq_f64(a: float64x2_t, b: float64x2_t) -> float64x2_t {
|
||||||
unsafe extern "unadjusted" {
|
unsafe { simd_fmax(a, b) }
|
||||||
#[cfg_attr(
|
|
||||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
|
||||||
link_name = "llvm.aarch64.neon.fmaxnm.v2f64"
|
|
||||||
)]
|
|
||||||
fn _vmaxnmq_f64(a: float64x2_t, b: float64x2_t) -> float64x2_t;
|
|
||||||
}
|
|
||||||
unsafe { _vmaxnmq_f64(a, b) }
|
|
||||||
}
|
}
|
||||||
#[doc = "Floating-point Maximum Number"]
|
#[doc = "Floating-point Maximum Number"]
|
||||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmh_f16)"]
|
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmh_f16)"]
|
||||||
@@ -13670,14 +13656,7 @@ pub fn vminh_f16(a: f16, b: f16) -> f16 {
|
|||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
#[cfg_attr(test, assert_instr(fminnm))]
|
#[cfg_attr(test, assert_instr(fminnm))]
|
||||||
pub fn vminnm_f64(a: float64x1_t, b: float64x1_t) -> float64x1_t {
|
pub fn vminnm_f64(a: float64x1_t, b: float64x1_t) -> float64x1_t {
|
||||||
unsafe extern "unadjusted" {
|
unsafe { simd_fmin(a, b) }
|
||||||
#[cfg_attr(
|
|
||||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
|
||||||
link_name = "llvm.aarch64.neon.fminnm.v1f64"
|
|
||||||
)]
|
|
||||||
fn _vminnm_f64(a: float64x1_t, b: float64x1_t) -> float64x1_t;
|
|
||||||
}
|
|
||||||
unsafe { _vminnm_f64(a, b) }
|
|
||||||
}
|
}
|
||||||
#[doc = "Floating-point Minimum Number (vector)"]
|
#[doc = "Floating-point Minimum Number (vector)"]
|
||||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmq_f64)"]
|
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmq_f64)"]
|
||||||
@@ -13686,14 +13665,7 @@ pub fn vminnm_f64(a: float64x1_t, b: float64x1_t) -> float64x1_t {
|
|||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
#[cfg_attr(test, assert_instr(fminnm))]
|
#[cfg_attr(test, assert_instr(fminnm))]
|
||||||
pub fn vminnmq_f64(a: float64x2_t, b: float64x2_t) -> float64x2_t {
|
pub fn vminnmq_f64(a: float64x2_t, b: float64x2_t) -> float64x2_t {
|
||||||
unsafe extern "unadjusted" {
|
unsafe { simd_fmin(a, b) }
|
||||||
#[cfg_attr(
|
|
||||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
|
||||||
link_name = "llvm.aarch64.neon.fminnm.v2f64"
|
|
||||||
)]
|
|
||||||
fn _vminnmq_f64(a: float64x2_t, b: float64x2_t) -> float64x2_t;
|
|
||||||
}
|
|
||||||
unsafe { _vminnmq_f64(a, b) }
|
|
||||||
}
|
}
|
||||||
#[doc = "Floating-point Minimum Number"]
|
#[doc = "Floating-point Minimum Number"]
|
||||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmh_f16)"]
|
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmh_f16)"]
|
||||||
|
|||||||
@@ -6580,7 +6580,6 @@ intrinsics:
|
|||||||
arch: aarch64,arm64ec
|
arch: aarch64,arm64ec
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
- name: "vmaxnm{neon_type.no}"
|
- name: "vmaxnm{neon_type.no}"
|
||||||
doc: Floating-point Maximum Number (vector)
|
doc: Floating-point Maximum Number (vector)
|
||||||
arguments: ["a: {neon_type}", "b: {neon_type}"]
|
arguments: ["a: {neon_type}", "b: {neon_type}"]
|
||||||
@@ -6592,11 +6591,7 @@ intrinsics:
|
|||||||
- float64x1_t
|
- float64x1_t
|
||||||
- float64x2_t
|
- float64x2_t
|
||||||
compose:
|
compose:
|
||||||
- LLVMLink:
|
- FnCall: [simd_fmax, [a, b]]
|
||||||
name: "fmaxnm.{neon_type}"
|
|
||||||
links:
|
|
||||||
- link: "llvm.aarch64.neon.fmaxnm.{neon_type}"
|
|
||||||
arch: aarch64,arm64ec
|
|
||||||
|
|
||||||
|
|
||||||
- name: "vmaxnmh_{type}"
|
- name: "vmaxnmh_{type}"
|
||||||
@@ -6806,11 +6801,7 @@ intrinsics:
|
|||||||
- float64x1_t
|
- float64x1_t
|
||||||
- float64x2_t
|
- float64x2_t
|
||||||
compose:
|
compose:
|
||||||
- LLVMLink:
|
- FnCall: [simd_fmin, [a, b]]
|
||||||
name: "fminnm.{neon_type}"
|
|
||||||
links:
|
|
||||||
- link: "llvm.aarch64.neon.fminnm.{neon_type}"
|
|
||||||
arch: aarch64,arm64ec
|
|
||||||
|
|
||||||
- name: "vminnmv{neon_type[0].no}"
|
- name: "vminnmv{neon_type[0].no}"
|
||||||
doc: "Floating-point minimum number across vector"
|
doc: "Floating-point minimum number across vector"
|
||||||
|
|||||||
Reference in New Issue
Block a user