#[inline(always)]
pub fn workgroup_memory_barrier_with_group_sync() {
#[cfg(target_arch = "spirv")]
{
spirv_std::arch::workgroup_memory_barrier_with_group_sync();
}
#[cfg(target_arch = "nvptx64")]
{
unsafe extern "C" {
#[link_name = "llvm.nvvm.barrier0"]
fn nvvm_barrier0();
}
unsafe {
nvvm_barrier0();
}
}
#[cfg(not(any(target_arch = "spirv", target_arch = "nvptx64")))]
#[cfg(feature = "cpu")]
{
crate::arch::cpu::barrier_wait();
}
}
#[inline(always)]
pub fn control_barrier<const EXECUTION: u32, const MEMORY: u32, const SEMANTICS: u32>() {
#[cfg(target_arch = "spirv")]
{
spirv_std::arch::control_barrier::<EXECUTION, MEMORY, SEMANTICS>();
}
#[cfg(not(target_arch = "spirv"))]
{
workgroup_memory_barrier_with_group_sync();
}
}