CX Framework
Cross-platform C utility framework
Loading...
Searching...
No Matches
clang_cpu.h
1
#pragma once
2
3
#include <
cx/platform/base.h
>
4
5
#if defined(__aarch64__)
6
#define _CPU_PAUSE __asm__ volatile("yield")
7
#elif defined(__EMSCRIPTEN__)
8
// WebAssembly doesn't have a spinloop hint
9
#define _CPU_PAUSE
10
#else
11
#define _CPU_PAUSE __asm__ volatile("pause")
12
#endif
13
14
#define _CPU_PREFETCH(ptr) __builtin_prefetch((ptr), 0, 0)
15
16
_meta_inline
int
ctz32(
unsigned
long
mask)
17
{
18
return
__builtin_ctz(mask);
19
}
20
21
#if defined (_ARCH_X64) || defined(_ARCH_ARM64)
22
23
_meta_inline
int
ctz64(
unsigned
long
long
mask)
24
{
25
return
__builtin_ctzll(mask);
26
}
27
28
#endif
base.h
Compiler and platform detection macros.
cx
platform
clang
clang_cpu.h
Generated by
1.9.8