VLC 4.0.0-dev
Loading...
Searching...
No Matches
cpu.c File Reference
Include dependency graph for cpu.c:

Functions

unsigned vlc_CPU_raw (void)
 Determines the CPU capabilities.
unsigned vlc_CPU (void)
 Retrieves CPU capability flags.
void vlc_CPU_set (unsigned mask)
 Masks CPU capability flags.
void vlc_CPU_dump (vlc_object_t *obj)
void vlc_CPU_functions_init (const char *capability, void *restrict funcs)
 Initialises DSP functions.

Variables

static atomic_uint cpu_flags = -1U

Function Documentation

◆ vlc_CPU()

unsigned vlc_CPU ( void )

Retrieves CPU capability flags.

References cpu_flags, unlikely, and vlc_CPU_raw().

◆ vlc_CPU_dump()

◆ vlc_CPU_functions_init()

void vlc_CPU_functions_init ( const char * name,
void *restrict funcs )

Initialises DSP functions.

This helper looks for accelerated Digital Signal Processing functions identified by the supplied type name. Those functions ares typically implemented using architecture-specific assembler code with Single Instruction Multiple Data (SIMD) opcodes for faster processing.

The exact purposes and semantics of the DSP functions is uniquely identified by a nul-terminated string.

Note
This function should not be used directly. It is recommended to use the convenience wrapper vlc_CPU_functions_init_once() instead.
Parameters
namenul-terminated type identifier (cannot be NULL)
[in,out]funcstype-specific data structure to be initialised

References init, likely, vlc_module_map(), and vlc_module_match().

Referenced by vlc_CPU_functions_init_once().

◆ vlc_CPU_raw()

unsigned vlc_CPU_raw ( void )

Determines the CPU capabilities.

Computes CPU capability flags.

References VLC_WEAK.

Referenced by vlc_CPU(), and vlc_CPU_set().

◆ vlc_CPU_set()

void vlc_CPU_set ( unsigned mask)

Masks CPU capability flags.

This overrides the cached CPU capability flags with the intersection of the actually-detected CPU capabilities and the supplied mask. Bits cannot be added, only cleared: masking never reports a capability that hardware doesn't actually have.

This is intended for testing purposes only (e.g. checkasm), to force code paths for lesser CPU capabilities to be exercised.

Warning
This function is not thread-safe with respect to vlc_CPU(): it must be called before any thread makes its first call to vlc_CPU(), otherwise the lazy initialisation in vlc_CPU() may race with and overwrite the masked value.

References cpu_flags, and vlc_CPU_raw().

Variable Documentation

◆ cpu_flags

atomic_uint cpu_flags = -1U
static

Referenced by vlc_CPU(), and vlc_CPU_set().