diff --git a/SConscript b/SConscript index 5a0cff7f5c..b48ec48c48 100644 --- a/SConscript +++ b/SConscript @@ -399,7 +399,7 @@ arm_compute_env = env.Clone() version_file = arm_compute_env.Command("src/core/arm_compute_version.embed", "", action=create_version_file) arm_compute_env.AlwaysBuild(version_file) -default_cpp_compiler = 'g++' if env['os'] not in ['android', 'macos', 'openbsd'] else 'clang++' +default_cpp_compiler = 'g++' if env['os'] not in ['android', 'macos', 'openbsd', 'freebsd'] else 'clang++' cpp_compiler = os.environ.get('CXX', default_cpp_compiler) # Generate embed files diff --git a/SConstruct b/SConstruct index 39c0ffdea3..6b78133739 100644 --- a/SConstruct +++ b/SConstruct @@ -103,7 +103,7 @@ vars.AddVariables( allowed_values=("armv7a", "armv7a-hf", "arm64-v8a", "arm64-v8.2-a", "arm64-v8.2-a-sve", "arm64-v8.2-a-sve2", "x86_32", "x86_64", "armv8a", "armv8.2-a", "armv8.2-a-sve", "armv8.6-a", "armv8.6-a-sve", "armv8.6-a-sve2", "armv8.6-a-sve2-sme2", "armv8r64", "x86")), EnumVariable("estate", "Execution State", "auto", allowed_values=("auto", "32", "64")), - EnumVariable("os", "Target OS. With bare metal selected, only Arm® Neon™ (not OpenCL) can be used, static libraries get built and Neon™'s multi-threading support is disabled.", "linux", allowed_values=("linux", "android", "tizen", "macos", "bare_metal", "openbsd","windows", "qnx")), + EnumVariable("os", "Target OS. With bare metal selected, only Arm® Neon™ (not OpenCL) can be used, static libraries get built and Neon™'s multi-threading support is disabled.", "linux", allowed_values=("linux", "android", "tizen", "macos", "bare_metal", "openbsd", "freebsd","windows", "qnx")), EnumVariable("build", "Either build directly on your device (native) or cross compile from your desktop machine (cross-compile). In both cases make sure the compiler is available in your path.", "cross_compile", allowed_values=("native", "cross_compile", "embed_only")), BoolVariable("examples", "Build example programs", True), BoolVariable("gemm_tuner", "Build gemm_tuner programs", True), @@ -282,11 +282,11 @@ if env['profile']: cpp_tool = {'linux': 'g++', 'android' : 'clang++', 'tizen': 'g++', 'macos':'clang++', - 'bare_metal':'g++', 'openbsd':'g++','windows':'clang-cl', 'qnx':'qcc -Vgcc_ntoaarch64le'} + 'bare_metal':'g++', 'openbsd':'g++', 'freebsd':'clang++', 'windows':'clang-cl', 'qnx':'qcc -Vgcc_ntoaarch64le'} c_tool = {'linux':'gcc', 'android': 'clang', 'tizen':'gcc', 'macos':'clang','bare_metal':'gcc', - 'openbsd':'gcc','windows':'clang-cl', 'qnx':'qcc -Vgcc_ntoaarch64le'} + 'openbsd':'gcc', 'freebsd':'clang++', 'windows':'clang-cl', 'qnx':'qcc -Vgcc_ntoaarch64le'} default_cpp_compiler = cpp_tool[env['os']] default_c_compiler = c_tool[env['os']] @@ -567,7 +567,7 @@ if env['opencl']: if env["os"] not in ["windows","android", "bare_metal", "qnx"] and (env['opencl'] or env['cppthreads']): env.Append(LIBS = ['pthread']) -if env['os'] == 'openbsd': +if env['os'] == 'openbsd' or 'freebsd': env.Append(LIBS = ['c']) env.Append(CCFLAGS = ['-fPIC']) diff --git a/arm_compute/core/utils/misc/Utility.h b/arm_compute/core/utils/misc/Utility.h index e5d0a03f9d..44d7c9bfa2 100644 --- a/arm_compute/core/utils/misc/Utility.h +++ b/arm_compute/core/utils/misc/Utility.h @@ -36,6 +36,7 @@ #include #include #include +#include namespace arm_compute { diff --git a/src/common/cpuinfo/CpuInfo.cpp b/src/common/cpuinfo/CpuInfo.cpp index 67e2906f06..91fb337918 100644 --- a/src/common/cpuinfo/CpuInfo.cpp +++ b/src/common/cpuinfo/CpuInfo.cpp @@ -31,6 +31,8 @@ #include #include +#include +#include #if !defined(BARE_METAL) #include @@ -52,15 +54,15 @@ #endif /* !defined(BARE_METAL) */ #if !defined(_WIN64) -#if !defined(BARE_METAL) && !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__QNX__) && \ +#if !defined(BARE_METAL) && !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__FreeBSD__) && !defined(__QNX__) && \ (defined(__arm__) || defined(__aarch64__)) #include /* Get HWCAP bits from asm/hwcap.h */ #include -#elif (defined(__OpenBSD__) || defined(__APPLE__)) && defined(__aarch64__) +#elif (defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__APPLE__)) && defined(__aarch64__) #include #include #endif /* defined(__APPLE__) && defined(__aarch64__)) */ -#endif /* !defined(BARE_METAL) && !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__QNX__) && (defined(__arm__) || defined(__aarch64__)) */ +#endif /* !defined(BARE_METAL) && !defined(__APPLE__) && !defined(__OpenBSD__) !defined(__FreeBSD__) && !defined(__QNX__) && (defined(__arm__) || defined(__aarch64__)) */ #define ARM_COMPUTE_CPU_FEATURE_HWCAP_CPUID (1 << 11) #define ARM_COMPUTE_GET_FEATURE_REG(var, freg) __asm __volatile("MRS %0, " #freg : "=r"(var)) @@ -70,7 +72,7 @@ namespace cpuinfo { namespace { -#if !defined(_WIN64) && !defined(BARE_METAL) && !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__QNX__) && \ +#if !defined(_WIN64) && !defined(BARE_METAL) && !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__FreeBSD__) && !defined(__QNX__) && \ (defined(__arm__) || defined(__aarch64__)) /** Extract MIDR using CPUID information that are exposed to user-space * @@ -352,7 +354,7 @@ CpuInfo::CpuInfo(CpuIsaInfo isa, std::vector cpus) : _isa(std::move(is CpuInfo CpuInfo::build() { -#if !defined(_WIN64) && !defined(BARE_METAL) && !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__QNX__) && \ +#if !defined(_WIN64) && !defined(BARE_METAL) && !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__FreeBSD__) && !defined(__QNX__) && \ (defined(__arm__) || defined(__aarch64__)) const uint32_t hwcaps = getauxval(AT_HWCAP); const uint32_t hwcaps2 = getauxval(AT_HWCAP2); @@ -383,7 +385,7 @@ CpuInfo CpuInfo::build() CpuInfo info(isa, cpus_model); return info; -#elif defined(__OpenBSD__) +#elif defined(__OpenBSD__) || defined(__FreeBSD__) int mib[2] = {0, 0}; int ncpu = {1}; size_t len = sizeof(ncpu); @@ -420,7 +422,7 @@ CpuInfo CpuInfo::build() CpuInfo info(isa, cpus_model); return info; #elif defined(__aarch64__) && \ - (defined(__OpenBSD__) || defined(__APPLE__)) /* #elif(BARE_METAL) && defined(__aarch64__) */ + (defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__APPLE__)) /* #elif(BARE_METAL) && defined(__aarch64__) */ int ncpus = get_hw_capability("hw.perflevel0.logicalcpu"); CpuIsaInfo isainfo; std::vector cpus_model(ncpus); @@ -466,7 +468,7 @@ CpuModel CpuInfo::cpu_model(uint32_t cpuid) const CpuModel CpuInfo::cpu_model() const { -#if defined(_WIN64) || defined(BARE_METAL) || defined(__APPLE__) || defined(__OpenBSD__) || defined(__QNX__) || \ +#if defined(_WIN64) || defined(BARE_METAL) || defined(__APPLE__) || defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__QNX__) || \ (!defined(__arm__) && !defined(__aarch64__)) return cpu_model(0); #else /* defined(BARE_METAL) || defined(__APPLE__) || defined(__OpenBSD__) || defined(__QNX__) || (!defined(__arm__) && !defined(__aarch64__)) */ diff --git a/src/core/NEON/kernels/arm_conv/pooling/pooling_depthfirst.hpp b/src/core/NEON/kernels/arm_conv/pooling/pooling_depthfirst.hpp index dbd1f9516d..a7f75956c1 100644 --- a/src/core/NEON/kernels/arm_conv/pooling/pooling_depthfirst.hpp +++ b/src/core/NEON/kernels/arm_conv/pooling/pooling_depthfirst.hpp @@ -27,9 +27,9 @@ #include "depthfirst_driver.hpp" #include "src/core/NEON/kernels/arm_conv/addressing.hpp" #include "utils.hpp" -#if !defined(_WIN64) && !defined(__OpenBSD__) +#if !defined(_WIN64) && !defined(__OpenBSD__) && !defined(__FreeBSD__) #include -#endif /* !defined(_WIN64) && !defined(__OpenBSD__) */ +#endif /* !defined(_WIN64) && !defined(__OpenBSD__) && !defined(__FreeBSD__) */ #include namespace arm_conv { diff --git a/src/core/NEON/kernels/arm_conv/pooling/pooling_depthfirst_generic.hpp b/src/core/NEON/kernels/arm_conv/pooling/pooling_depthfirst_generic.hpp index cb241cf76f..c5836c9495 100644 --- a/src/core/NEON/kernels/arm_conv/pooling/pooling_depthfirst_generic.hpp +++ b/src/core/NEON/kernels/arm_conv/pooling/pooling_depthfirst_generic.hpp @@ -26,9 +26,9 @@ #include "depthfirst_driver.hpp" #include "utils.hpp" -#if !defined(_WIN64) && !defined(__OpenBSD__) +#if !defined(_WIN64) && !defined(__OpenBSD__) && !defined(__FreeBSD__) #include -#endif /* !defined(_WIN64) && !defined(__OpenBSD__) */ +#endif /* !defined(_WIN64) && !defined(__OpenBSD__) && !defined(FreeBSD) */ namespace arm_conv { namespace pooling { diff --git a/src/core/NEON/kernels/arm_gemm/gemm_hybrid_indirect.hpp b/src/core/NEON/kernels/arm_gemm/gemm_hybrid_indirect.hpp index d1b8bcbc8b..f3facfb477 100644 --- a/src/core/NEON/kernels/arm_gemm/gemm_hybrid_indirect.hpp +++ b/src/core/NEON/kernels/arm_gemm/gemm_hybrid_indirect.hpp @@ -23,9 +23,9 @@ */ #pragma once -#if !defined(_WIN64) && !defined(__OpenBSD__) +#if !defined(_WIN64) && !defined(__OpenBSD__) && !defined(__FreeBSD__) #include -#endif /* !defined(_WIN64) && !defined(__OpenBSD__) */ +#endif /* !defined(_WIN64) && !defined(__OpenBSD__) && !defined(__FreeBSD__) */ #include #include diff --git a/src/core/NEON/kernels/arm_gemm/interleave-8way.cpp b/src/core/NEON/kernels/arm_gemm/interleave-8way.cpp index a05d700c5e..9b044dff1b 100644 --- a/src/core/NEON/kernels/arm_gemm/interleave-8way.cpp +++ b/src/core/NEON/kernels/arm_gemm/interleave-8way.cpp @@ -25,9 +25,9 @@ #include -#if !defined(_WIN64) && !defined(__OpenBSD__) +#if !defined(_WIN64) && !defined(__OpenBSD__) && !defined(__FreeBSD__) #include -#endif /* !defined(_WIN64) && !defined(__OpenBSD__) */ +#endif /* !defined(_WIN64) && !defined(__OpenBSD__) && !defined(__FreeBSD__) */ #include diff --git a/src/core/NEON/kernels/arm_gemm/interleave_indirect.cpp b/src/core/NEON/kernels/arm_gemm/interleave_indirect.cpp index da27f31428..49e52eb030 100644 --- a/src/core/NEON/kernels/arm_gemm/interleave_indirect.cpp +++ b/src/core/NEON/kernels/arm_gemm/interleave_indirect.cpp @@ -28,9 +28,9 @@ #include "interleave_indirect.hpp" #include "bfloat.hpp" -#if !defined(_WIN64) && !defined(__OpenBSD__) +#if !defined(_WIN64) && !defined(__OpenBSD__) && !defined(__FreeBSD__) #include -#endif /* !defined(_WIN64) && !defined(__OpenBSD__) */ +#endif /* !defined(_WIN64) && !defined(__OpenBSD__) && !defined(__FreeBSD__) */ #include #include diff --git a/src/core/NEON/kernels/arm_gemm/transform-bf16.cpp b/src/core/NEON/kernels/arm_gemm/transform-bf16.cpp index c364b997b1..cc9025fef9 100644 --- a/src/core/NEON/kernels/arm_gemm/transform-bf16.cpp +++ b/src/core/NEON/kernels/arm_gemm/transform-bf16.cpp @@ -26,9 +26,9 @@ #include "src/core/NEON/wrapper/intrinsics/intrinsics.h" #include "bfloat.hpp" -#if !defined(_WIN64) && !defined(__OpenBSD__) +#if !defined(_WIN64) && !defined(__OpenBSD__) && !defined(__FreeBSD__) #include -#endif /* !defined(_WIN64) && !defined(__OpenBSD__) */ +#endif /* !defined(_WIN64) && !defined(__OpenBSD__) && !defined(__FreeBSD__) */ namespace arm_gemm { diff --git a/src/core/NEON/kernels/arm_gemm/transform.cpp b/src/core/NEON/kernels/arm_gemm/transform.cpp index 70c2ed3411..6521e9af2c 100644 --- a/src/core/NEON/kernels/arm_gemm/transform.cpp +++ b/src/core/NEON/kernels/arm_gemm/transform.cpp @@ -25,9 +25,9 @@ #include "bfloat.hpp" -#if !defined(_WIN64) && !defined(__OpenBSD__) +#if !defined(_WIN64) && !defined(__OpenBSD__) && !defined(__FreeBSD__) #include -#endif /* !defined(_WIN64) && !defined(__OpenBSD__) */ +#endif /* !defined(_WIN64) && !defined(__OpenBSD__) && !defined(__FreeBSD__) */ namespace arm_gemm { diff --git a/src/runtime/CPP/CPPScheduler.cpp b/src/runtime/CPP/CPPScheduler.cpp index bc91f54918..6237879db5 100644 --- a/src/runtime/CPP/CPPScheduler.cpp +++ b/src/runtime/CPP/CPPScheduler.cpp @@ -103,7 +103,7 @@ void set_thread_affinity(int core_id) return; } -#if !defined(_WIN64) && !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__QNX__) +#if !defined(_WIN64) && !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__FreeBSD__) && !defined(__QNX__) cpu_set_t set; CPU_ZERO(&set); CPU_SET(core_id, &set); diff --git a/tests/framework/Framework.cpp b/tests/framework/Framework.cpp index 7edde7af65..885a164ec7 100644 --- a/tests/framework/Framework.cpp +++ b/tests/framework/Framework.cpp @@ -26,6 +26,8 @@ #include "arm_compute/runtime/Scheduler.h" #include "tests/framework/ParametersLibrary.h" #include "tests/framework/TestFilter.h" +#include "tests/framework/instruments/OpenCLTimer.h" +#include "tests/framework/instruments/OpenCLMemoryUsage.h" #ifdef ARM_COMPUTE_CL #include "arm_compute/runtime/CL/CLRuntimeContext.h" diff --git a/tests/framework/instruments/Instruments.h b/tests/framework/instruments/Instruments.h index d5d6398b44..c8d618899a 100644 --- a/tests/framework/instruments/Instruments.h +++ b/tests/framework/instruments/Instruments.h @@ -24,12 +24,12 @@ #ifndef ACL_TESTS_FRAMEWORK_INSTRUMENTS_INSTRUMENTS_H #define ACL_TESTS_FRAMEWORK_INSTRUMENTS_INSTRUMENTS_H -#if !defined(_WIN64) && !defined(BARE_METAL) && !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__QNX__) +#if !defined(_WIN64) && !defined(BARE_METAL) && !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__FreeBSD__) && !defined(__QNX__) #include "MaliCounter.h" #include "OpenCLMemoryUsage.h" #include "OpenCLTimer.h" #include "PMUCounter.h" -#endif /* !defined(_WIN64) && !defined(BARE_METAL) && !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__QNX__) */ +#endif /* !defined(_WIN64) && !defined(BARE_METAL) && !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__FreeBSD__) && !defined(__QNX__) */ #include "SchedulerTimer.h" #include "WallClockTimer.h"