aboutsummaryrefslogtreecommitdiffstats
path: root/vppinfra/vppinfra/cpu.h
diff options
context:
space:
mode:
authorDamjan Marion <damarion@cisco.com>2016-12-19 23:05:39 +0100
committerDamjan Marion <damarion@cisco.com>2016-12-28 12:25:14 +0100
commit7cd468a3d7dee7d6c92f69a0bb7061ae208ec727 (patch)
tree5de62f8dbd3a752f5a676ca600e43d2652d1ff1a /vppinfra/vppinfra/cpu.h
parent696f1adec0df3b8f161862566dd9c86174302658 (diff)
Reorganize source tree to use single autotools instance
Change-Id: I7b51f88292e057c6443b12224486f2d0c9f8ae23 Signed-off-by: Damjan Marion <damarion@cisco.com>
Diffstat (limited to 'vppinfra/vppinfra/cpu.h')
-rw-r--r--vppinfra/vppinfra/cpu.h112
1 files changed, 0 insertions, 112 deletions
diff --git a/vppinfra/vppinfra/cpu.h b/vppinfra/vppinfra/cpu.h
deleted file mode 100644
index 9c149f3fa2a..00000000000
--- a/vppinfra/vppinfra/cpu.h
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef included_clib_cpu_h
-#define included_clib_cpu_h
-
-#include <vppinfra/format.h>
-
-/*
- * multiarchitecture support. Adding new entry will produce
- * new graph node function variant optimized for specific cpu
- * microarchitecture.
- * Order is important for runtime selection, as 1st match wins...
- */
-
-#if __x86_64__ && CLIB_DEBUG == 0
-#define foreach_march_variant(macro, x) \
- macro(avx2, x, "arch=core-avx2")
-#else
-#define foreach_march_variant(macro, x)
-#endif
-
-
-#if __GNUC__ > 4 && !__clang__
-#define CLIB_CPU_OPTIMIZED __attribute__ ((optimize ("tree-vectorize")))
-#else
-#define CLIB_CPU_OPTIMIZED
-#endif
-
-
-#define CLIB_MULTIARCH_ARCH_CHECK(arch, fn, tgt) \
- if (clib_cpu_supports_ ## arch()) \
- return & fn ## _ ##arch;
-
-#define CLIB_MULTIARCH_SELECT_FN(fn,...) \
- __VA_ARGS__ void * fn ## _multiarch_select(void) \
-{ \
- foreach_march_variant(CLIB_MULTIARCH_ARCH_CHECK, fn) \
- return & fn; \
-}
-
-
-#define foreach_x86_64_flags \
-_ (sse3, 1, ecx, 0) \
-_ (ssse3, 1, ecx, 9) \
-_ (sse41, 1, ecx, 19) \
-_ (sse42, 1, ecx, 20) \
-_ (avx, 1, ecx, 28) \
-_ (avx2, 7, ebx, 5) \
-_ (avx512f, 7, ebx, 16) \
-_ (aes, 1, ecx, 25) \
-_ (sha, 7, ebx, 29) \
-_ (invariant_tsc, 0x80000007, edx, 8)
-
-#if defined(__x86_64__)
-#include "cpuid.h"
-
-static inline int
-clib_get_cpuid (const u32 lev, u32 * eax, u32 * ebx, u32 * ecx, u32 * edx)
-{
- if ((u32) __get_cpuid_max (0x80000000 & lev, 0) < lev)
- return 0;
- if (lev == 7)
- __cpuid_count (lev, 0, *eax, *ebx, *ecx, *edx);
- else
- __cpuid (lev, *eax, *ebx, *ecx, *edx);
- return 1;
-}
-
-
-#define _(flag, func, reg, bit) \
-static inline int \
-clib_cpu_supports_ ## flag() \
-{ \
- u32 __attribute__((unused)) eax, ebx = 0, ecx = 0, edx = 0; \
- clib_get_cpuid (func, &eax, &ebx, &ecx, &edx); \
- \
- return ((reg & (1 << bit)) != 0); \
-}
-foreach_x86_64_flags
-#undef _
-#else
-
-#define _(flag, func, reg, bit) \
-static inline int clib_cpu_supports_ ## flag() { return 0; }
-foreach_x86_64_flags
-#undef _
-#endif
-#endif
- format_function_t format_cpu_uarch;
-format_function_t format_cpu_model_name;
-format_function_t format_cpu_flags;
-
-/*
- * fd.io coding-style-patch-verification: ON
- *
- * Local Variables:
- * eval: (c-set-style "gnu")
- * End:
- */