mirror of
https://github.com/rust-lang/rust.git
synced 2025-11-17 05:36:23 +00:00
aarch64: use simd_reduce_min and simd_reduce_max for floats
This commit is contained in:
parent
72afae5fd6
commit
750ddfd8d3
@ -13256,14 +13256,7 @@ pub fn vmaxnmh_f16(a: f16, b: f16) -> f16 {
|
||||
#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
|
||||
#[cfg_attr(test, assert_instr(fmaxnmv))]
|
||||
pub fn vmaxnmv_f16(a: float16x4_t) -> f16 {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.fmaxnmv.f16.v4f16"
|
||||
)]
|
||||
fn _vmaxnmv_f16(a: float16x4_t) -> f16;
|
||||
}
|
||||
unsafe { _vmaxnmv_f16(a) }
|
||||
unsafe { simd_reduce_max(a) }
|
||||
}
|
||||
#[doc = "Floating-point maximum number across vector"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmvq_f16)"]
|
||||
@ -13272,14 +13265,7 @@ pub fn vmaxnmv_f16(a: float16x4_t) -> f16 {
|
||||
#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
|
||||
#[cfg_attr(test, assert_instr(fmaxnmv))]
|
||||
pub fn vmaxnmvq_f16(a: float16x8_t) -> f16 {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.fmaxnmv.f16.v8f16"
|
||||
)]
|
||||
fn _vmaxnmvq_f16(a: float16x8_t) -> f16;
|
||||
}
|
||||
unsafe { _vmaxnmvq_f16(a) }
|
||||
unsafe { simd_reduce_max(a) }
|
||||
}
|
||||
#[doc = "Floating-point maximum number across vector"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmv_f32)"]
|
||||
@ -13288,14 +13274,7 @@ pub fn vmaxnmvq_f16(a: float16x8_t) -> f16 {
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
#[cfg_attr(test, assert_instr(fmaxnmp))]
|
||||
pub fn vmaxnmv_f32(a: float32x2_t) -> f32 {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.fmaxnmv.f32.v2f32"
|
||||
)]
|
||||
fn _vmaxnmv_f32(a: float32x2_t) -> f32;
|
||||
}
|
||||
unsafe { _vmaxnmv_f32(a) }
|
||||
unsafe { simd_reduce_max(a) }
|
||||
}
|
||||
#[doc = "Floating-point maximum number across vector"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmvq_f64)"]
|
||||
@ -13304,14 +13283,7 @@ pub fn vmaxnmv_f32(a: float32x2_t) -> f32 {
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
#[cfg_attr(test, assert_instr(fmaxnmp))]
|
||||
pub fn vmaxnmvq_f64(a: float64x2_t) -> f64 {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.fmaxnmv.f64.v2f64"
|
||||
)]
|
||||
fn _vmaxnmvq_f64(a: float64x2_t) -> f64;
|
||||
}
|
||||
unsafe { _vmaxnmvq_f64(a) }
|
||||
unsafe { simd_reduce_max(a) }
|
||||
}
|
||||
#[doc = "Floating-point maximum number across vector"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmvq_f32)"]
|
||||
@ -13320,14 +13292,7 @@ pub fn vmaxnmvq_f64(a: float64x2_t) -> f64 {
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
#[cfg_attr(test, assert_instr(fmaxnmv))]
|
||||
pub fn vmaxnmvq_f32(a: float32x4_t) -> f32 {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.fmaxnmv.f32.v4f32"
|
||||
)]
|
||||
fn _vmaxnmvq_f32(a: float32x4_t) -> f32;
|
||||
}
|
||||
unsafe { _vmaxnmvq_f32(a) }
|
||||
unsafe { simd_reduce_max(a) }
|
||||
}
|
||||
#[doc = "Floating-point maximum number across vector"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxv_f16)"]
|
||||
@ -13683,14 +13648,7 @@ pub fn vminnmh_f16(a: f16, b: f16) -> f16 {
|
||||
#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
|
||||
#[cfg_attr(test, assert_instr(fminnmv))]
|
||||
pub fn vminnmv_f16(a: float16x4_t) -> f16 {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.fminnmv.f16.v4f16"
|
||||
)]
|
||||
fn _vminnmv_f16(a: float16x4_t) -> f16;
|
||||
}
|
||||
unsafe { _vminnmv_f16(a) }
|
||||
unsafe { simd_reduce_min(a) }
|
||||
}
|
||||
#[doc = "Floating-point minimum number across vector"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmvq_f16)"]
|
||||
@ -13699,14 +13657,7 @@ pub fn vminnmv_f16(a: float16x4_t) -> f16 {
|
||||
#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
|
||||
#[cfg_attr(test, assert_instr(fminnmv))]
|
||||
pub fn vminnmvq_f16(a: float16x8_t) -> f16 {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.fminnmv.f16.v8f16"
|
||||
)]
|
||||
fn _vminnmvq_f16(a: float16x8_t) -> f16;
|
||||
}
|
||||
unsafe { _vminnmvq_f16(a) }
|
||||
unsafe { simd_reduce_min(a) }
|
||||
}
|
||||
#[doc = "Floating-point minimum number across vector"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmv_f32)"]
|
||||
@ -13715,14 +13666,7 @@ pub fn vminnmvq_f16(a: float16x8_t) -> f16 {
|
||||
#[cfg_attr(test, assert_instr(fminnmp))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
pub fn vminnmv_f32(a: float32x2_t) -> f32 {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.fminnmv.f32.v2f32"
|
||||
)]
|
||||
fn _vminnmv_f32(a: float32x2_t) -> f32;
|
||||
}
|
||||
unsafe { _vminnmv_f32(a) }
|
||||
unsafe { simd_reduce_min(a) }
|
||||
}
|
||||
#[doc = "Floating-point minimum number across vector"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmvq_f64)"]
|
||||
@ -13731,14 +13675,7 @@ pub fn vminnmv_f32(a: float32x2_t) -> f32 {
|
||||
#[cfg_attr(test, assert_instr(fminnmp))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
pub fn vminnmvq_f64(a: float64x2_t) -> f64 {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.fminnmv.f64.v2f64"
|
||||
)]
|
||||
fn _vminnmvq_f64(a: float64x2_t) -> f64;
|
||||
}
|
||||
unsafe { _vminnmvq_f64(a) }
|
||||
unsafe { simd_reduce_min(a) }
|
||||
}
|
||||
#[doc = "Floating-point minimum number across vector"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmvq_f32)"]
|
||||
@ -13747,14 +13684,7 @@ pub fn vminnmvq_f64(a: float64x2_t) -> f64 {
|
||||
#[cfg_attr(test, assert_instr(fminnmv))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
pub fn vminnmvq_f32(a: float32x4_t) -> f32 {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.fminnmv.f32.v4f32"
|
||||
)]
|
||||
fn _vminnmvq_f32(a: float32x4_t) -> f32;
|
||||
}
|
||||
unsafe { _vminnmvq_f32(a) }
|
||||
unsafe { simd_reduce_min(a) }
|
||||
}
|
||||
#[doc = "Floating-point minimum number across vector"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminv_f16)"]
|
||||
|
||||
@ -6635,11 +6635,7 @@ intrinsics:
|
||||
- [float32x2_t, f32]
|
||||
- [float64x2_t, f64]
|
||||
compose:
|
||||
- LLVMLink:
|
||||
name: "fmaxnmv.{neon_type[0]}"
|
||||
links:
|
||||
- link: "llvm.aarch64.neon.fmaxnmv.{type[1]}.{neon_type[0]}"
|
||||
arch: aarch64,arm64ec
|
||||
- FnCall: [simd_reduce_max, [a]]
|
||||
|
||||
- name: "vmaxnmv{neon_type[0].no}"
|
||||
doc: Floating-point maximum number across vector
|
||||
@ -6651,11 +6647,7 @@ intrinsics:
|
||||
types:
|
||||
- [float32x4_t, f32]
|
||||
compose:
|
||||
- LLVMLink:
|
||||
name: "fmaxnmv.{neon_type[0]}"
|
||||
links:
|
||||
- link: "llvm.aarch64.neon.fmaxnmv.{type[1]}.{neon_type[0]}"
|
||||
arch: aarch64,arm64ec
|
||||
- FnCall: [simd_reduce_max, [a]]
|
||||
|
||||
|
||||
- name: "vmaxnmv{neon_type[0].no}"
|
||||
@ -6671,11 +6663,7 @@ intrinsics:
|
||||
- [float16x4_t, f16]
|
||||
- [float16x8_t, f16]
|
||||
compose:
|
||||
- LLVMLink:
|
||||
name: "fmaxnmv.{neon_type[0]}"
|
||||
links:
|
||||
- link: "llvm.aarch64.neon.fmaxnmv.{type[1]}.{neon_type[0]}"
|
||||
arch: aarch64,arm64ec
|
||||
- FnCall: [simd_reduce_max, [a]]
|
||||
|
||||
|
||||
- name: "vminnmv{neon_type[0].no}"
|
||||
@ -6691,11 +6679,7 @@ intrinsics:
|
||||
- [float16x4_t, f16]
|
||||
- [float16x8_t, f16]
|
||||
compose:
|
||||
- LLVMLink:
|
||||
name: "fminnmv.{neon_type[0]}"
|
||||
links:
|
||||
- link: "llvm.aarch64.neon.fminnmv.{type[1]}.{neon_type[0]}"
|
||||
arch: aarch64,arm64ec
|
||||
- FnCall: [simd_reduce_min, [a]]
|
||||
|
||||
|
||||
- name: "vmaxv{neon_type[0].no}"
|
||||
@ -6815,11 +6799,7 @@ intrinsics:
|
||||
- [float32x2_t, "f32"]
|
||||
- [float64x2_t, "f64"]
|
||||
compose:
|
||||
- LLVMLink:
|
||||
name: "vminnmv.{neon_type[0]}"
|
||||
links:
|
||||
- link: "llvm.aarch64.neon.fminnmv.{type[1]}.{neon_type[0]}"
|
||||
arch: aarch64,arm64ec
|
||||
- FnCall: [simd_reduce_min, [a]]
|
||||
|
||||
- name: "vminnmv{neon_type[0].no}"
|
||||
doc: "Floating-point minimum number across vector"
|
||||
@ -6832,11 +6812,7 @@ intrinsics:
|
||||
types:
|
||||
- [float32x4_t, "f32"]
|
||||
compose:
|
||||
- LLVMLink:
|
||||
name: "vminnmv.{neon_type[0]}"
|
||||
links:
|
||||
- link: "llvm.aarch64.neon.fminnmv.{type[1]}.{neon_type[0]}"
|
||||
arch: aarch64,arm64ec
|
||||
- FnCall: [simd_reduce_min, [a]]
|
||||
|
||||
- name: "vmovl_high{neon_type[0].noq}"
|
||||
doc: Vector move
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user