diff options
author | Henrik Gramner <gramner@twoorioles.com> | 2022-07-06 15:42:43 +0300 |
---|---|---|
committer | Henrik Gramner <henrik@gramner.com> | 2022-07-06 15:56:24 +0300 |
commit | 820bf5156322ea6f9d1fc180ac579743347b9c5b (patch) | |
tree | b80d7bb75e617da7c152e72f356bc4ec483d0898 | |
parent | 233737c9b18e84372701e89bf57098257a30c8e4 (diff) |
cpu: Inline dav1d_get_cpu_flags()
-rw-r--r-- | include/common/attributes.h | 6 | ||||
-rw-r--r-- | src/cpu.c | 16 | ||||
-rw-r--r-- | src/cpu.h | 8 |
3 files changed, 19 insertions, 11 deletions
diff --git a/include/common/attributes.h b/include/common/attributes.h index 4ccc421..ba04fcb 100644 --- a/include/common/attributes.h +++ b/include/common/attributes.h @@ -107,6 +107,12 @@ #define NOINLINE __attribute__((noinline)) #endif +#ifdef _MSC_VER +#define ALWAYS_INLINE __forceinline +#else +#define ALWAYS_INLINE __attribute__((always_inline)) inline +#endif + #ifdef __clang__ #define NO_SANITIZE(x) __attribute__((no_sanitize(x))) #else @@ -48,28 +48,24 @@ #define cpu_set_t cpuset_t #endif -static unsigned flags = 0; -static unsigned flags_mask = -1; +unsigned dav1d_cpu_flags = 0U; +unsigned dav1d_cpu_flags_mask = ~0U; COLD void dav1d_init_cpu(void) { #if HAVE_ASM && !__has_feature(memory_sanitizer) // memory sanitizer is inherently incompatible with asm #if ARCH_AARCH64 || ARCH_ARM - flags = dav1d_get_cpu_flags_arm(); + dav1d_cpu_flags = dav1d_get_cpu_flags_arm(); #elif ARCH_PPC64LE - flags = dav1d_get_cpu_flags_ppc(); + dav1d_cpu_flags = dav1d_get_cpu_flags_ppc(); #elif ARCH_X86 - flags = dav1d_get_cpu_flags_x86(); + dav1d_cpu_flags = dav1d_get_cpu_flags_x86(); #endif #endif } -COLD unsigned dav1d_get_cpu_flags(void) { - return flags & flags_mask; -} - COLD void dav1d_set_cpu_flags_mask(const unsigned mask) { - flags_mask = mask; + dav1d_cpu_flags_mask = mask; } COLD int dav1d_num_logical_processors(Dav1dContext *const c) { @@ -43,9 +43,15 @@ #include "src/x86/cpu.h" #endif +extern unsigned dav1d_cpu_flags; +extern unsigned dav1d_cpu_flags_mask; + void dav1d_init_cpu(void); -unsigned dav1d_get_cpu_flags(void); DAV1D_API void dav1d_set_cpu_flags_mask(unsigned mask); int dav1d_num_logical_processors(Dav1dContext *c); +static ALWAYS_INLINE unsigned dav1d_get_cpu_flags(void) { + return dav1d_cpu_flags & dav1d_cpu_flags_mask; +} + #endif /* DAV1D_SRC_CPU_H */ |