Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/videolan/dav1d.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenrik Gramner <gramner@twoorioles.com>2022-07-06 15:42:43 +0300
committerHenrik Gramner <henrik@gramner.com>2022-07-06 15:56:24 +0300
commit820bf5156322ea6f9d1fc180ac579743347b9c5b (patch)
treeb80d7bb75e617da7c152e72f356bc4ec483d0898
parent233737c9b18e84372701e89bf57098257a30c8e4 (diff)
cpu: Inline dav1d_get_cpu_flags()
-rw-r--r--include/common/attributes.h6
-rw-r--r--src/cpu.c16
-rw-r--r--src/cpu.h8
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
diff --git a/src/cpu.c b/src/cpu.c
index 3d129c8..d24148c 100644
--- a/src/cpu.c
+++ b/src/cpu.c
@@ -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) {
diff --git a/src/cpu.h b/src/cpu.h
index b5c27f7..7616c0a 100644
--- a/src/cpu.h
+++ b/src/cpu.h
@@ -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 */