Auto merge of #115547 - WaffleLapkin:spin_looping, r=Mark-Simulacrum

Simplify `core::hint::spin_loop`

The grouping was inconsistent and not really helpful.

r? t-libs
This commit is contained in:
bors 2023-09-18 00:02:40 +00:00
commit 8a7cab8d0e

View File

@ -175,35 +175,28 @@ pub fn spin_loop() {
unsafe { crate::arch::x86_64::_mm_pause() }; unsafe { crate::arch::x86_64::_mm_pause() };
} }
// RISC-V platform spin loop hint implementation
{
// RISC-V RV32 and RV64 share the same PAUSE instruction, but they are located in different
// modules in `core::arch`.
// In this case, here we call `pause` function in each core arch module.
#[cfg(target_arch = "riscv32")] #[cfg(target_arch = "riscv32")]
{ {
crate::arch::riscv32::pause(); crate::arch::riscv32::pause();
} }
#[cfg(target_arch = "riscv64")] #[cfg(target_arch = "riscv64")]
{ {
crate::arch::riscv64::pause(); crate::arch::riscv64::pause();
} }
}
#[cfg(any(target_arch = "aarch64", all(target_arch = "arm", target_feature = "v6")))]
{
#[cfg(target_arch = "aarch64")] #[cfg(target_arch = "aarch64")]
{ {
// SAFETY: the `cfg` attr ensures that we only execute this on aarch64 targets. // SAFETY: the `cfg` attr ensures that we only execute this on aarch64 targets.
unsafe { crate::arch::aarch64::__isb(crate::arch::aarch64::SY) }; unsafe { crate::arch::aarch64::__isb(crate::arch::aarch64::SY) };
} }
#[cfg(target_arch = "arm")]
#[cfg(all(target_arch = "arm", target_feature = "v6"))]
{ {
// SAFETY: the `cfg` attr ensures that we only execute this on arm targets // SAFETY: the `cfg` attr ensures that we only execute this on arm targets
// with support for the v6 feature. // with support for the v6 feature.
unsafe { crate::arch::arm::__yield() }; unsafe { crate::arch::arm::__yield() };
} }
}
} }
/// An identity function that *__hints__* to the compiler to be maximally pessimistic about what /// An identity function that *__hints__* to the compiler to be maximally pessimistic about what