Merge pull request #3758 from ilya-lavrenov:aarch64

pull/3762/merge
Vadim Pisarevsky 10 years ago
commit 8e37a693e5
  1. 2
      3rdparty/libpng/CMakeLists.txt
  2. 4
      CMakeLists.txt
  3. 9
      cmake/OpenCVDetectCUDA.cmake
  4. 4
      cmake/OpenCVDetectCXXCompiler.cmake
  5. 2
      modules/core/include/opencv2/core/cvdef.h
  6. 6
      modules/core/src/system.cpp
  7. 6
      modules/cudalegacy/test/TestHaarCascadeApplication.cpp
  8. 2
      modules/cudalegacy/test/test_precomp.hpp

@ -14,7 +14,7 @@ ocv_include_directories("${CMAKE_CURRENT_SOURCE_DIR}" ${ZLIB_INCLUDE_DIRS})
file(GLOB lib_srcs *.c) file(GLOB lib_srcs *.c)
file(GLOB lib_hdrs *.h) file(GLOB lib_hdrs *.h)
if(NEON AND CMAKE_SIZEOF_VOID_P EQUAL 4) if(NEON AND ARM)
list(APPEND lib_srcs arm/filter_neon.S) list(APPEND lib_srcs arm/filter_neon.S)
add_definitions(-DPNG_ARM_NEON) add_definitions(-DPNG_ARM_NEON)
endif() endif()

@ -225,8 +225,8 @@ OCV_OPTION(ENABLE_POPCNT "Enable POPCNT instructions"
OCV_OPTION(ENABLE_AVX "Enable AVX instructions" OFF IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) ) OCV_OPTION(ENABLE_AVX "Enable AVX instructions" OFF IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
OCV_OPTION(ENABLE_AVX2 "Enable AVX2 instructions" OFF IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) ) OCV_OPTION(ENABLE_AVX2 "Enable AVX2 instructions" OFF IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
OCV_OPTION(ENABLE_FMA3 "Enable FMA3 instructions" OFF IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) ) OCV_OPTION(ENABLE_FMA3 "Enable FMA3 instructions" OFF IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
OCV_OPTION(ENABLE_NEON "Enable NEON instructions" OFF IF CMAKE_COMPILER_IS_GNUCXX AND (ARM OR IOS) ) OCV_OPTION(ENABLE_NEON "Enable NEON instructions" OFF IF CMAKE_COMPILER_IS_GNUCXX AND (ARM OR AARCH64 OR IOS) )
OCV_OPTION(ENABLE_VFPV3 "Enable VFPv3-D32 instructions" OFF IF CMAKE_COMPILER_IS_GNUCXX AND (ARM OR IOS) ) OCV_OPTION(ENABLE_VFPV3 "Enable VFPv3-D32 instructions" OFF IF CMAKE_COMPILER_IS_GNUCXX AND (ARM OR AARCH64 OR IOS) )
OCV_OPTION(ENABLE_NOISY_WARNINGS "Show all warnings even if they are too noisy" OFF ) OCV_OPTION(ENABLE_NOISY_WARNINGS "Show all warnings even if they are too noisy" OFF )
OCV_OPTION(OPENCV_WARNINGS_ARE_ERRORS "Treat warnings as errors" OFF ) OCV_OPTION(OPENCV_WARNINGS_ARE_ERRORS "Treat warnings as errors" OFF )
OCV_OPTION(ENABLE_WINRT_MODE "Build with Windows Runtime support" OFF IF WIN32 ) OCV_OPTION(ENABLE_WINRT_MODE "Build with Windows Runtime support" OFF IF WIN32 )

@ -80,8 +80,13 @@ if(CUDA_FOUND)
if(NOT DEFINED __cuda_arch_bin) if(NOT DEFINED __cuda_arch_bin)
if(ANDROID) if(ANDROID)
set(__cuda_arch_bin "3.2") if(ARM)
set(__cuda_arch_ptx "") set(__cuda_arch_bin "3.2")
set(__cuda_arch_ptx "")
elseif(AARCH64)
set(__cuda_arch_bin "5.2")
set(__cuda_arch_ptx "")
endif()
else() else()
if(${CUDA_VERSION} VERSION_LESS "5.0") if(${CUDA_VERSION} VERSION_LESS "5.0")
set(__cuda_arch_bin "1.1 1.2 1.3 2.0 2.1(2.0) 3.0") set(__cuda_arch_bin "1.1 1.2 1.3 2.0 2.1(2.0) 3.0")

@ -107,8 +107,10 @@ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*")
set(X86_64 1) set(X86_64 1)
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i686.*|i386.*|x86.*|amd64.*|AMD64.*") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i686.*|i386.*|x86.*|amd64.*|AMD64.*")
set(X86 1) set(X86 1)
elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "arm.*|ARM.*") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm.*|ARM.*)")
set(ARM 1) set(ARM 1)
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*)")
set(AARCH64 1)
endif() endif()

@ -191,7 +191,7 @@
# include "arm_neon.h" # include "arm_neon.h"
# define CV_NEON 1 # define CV_NEON 1
# define CPU_HAS_NEON_FEATURE (true) # define CPU_HAS_NEON_FEATURE (true)
#elif defined(__ARM_NEON__) #elif defined(__ARM_NEON__) || (defined (__ARM_NEON) && defined(__aarch64__))
# include <arm_neon.h> # include <arm_neon.h>
# define CV_NEON 1 # define CV_NEON 1
#endif #endif

@ -319,6 +319,9 @@ struct HWFeatures
} }
#if defined ANDROID || defined __linux__ #if defined ANDROID || defined __linux__
#ifdef __aarch64__
f.have[CV_CPU_NEON] = true;
#else
int cpufile = open("/proc/self/auxv", O_RDONLY); int cpufile = open("/proc/self/auxv", O_RDONLY);
if (cpufile >= 0) if (cpufile >= 0)
@ -337,7 +340,8 @@ struct HWFeatures
close(cpufile); close(cpufile);
} }
#elif (defined __clang__ || defined __APPLE__) && defined __ARM_NEON__ #endif
#elif (defined __clang__ || defined __APPLE__) && (defined __ARM_NEON__ || (defined __ARM_NEON && defined __aarch64__))
f.have[CV_CPU_NEON] = true; f.have[CV_CPU_NEON] = true;
#endif #endif

@ -52,7 +52,7 @@ namespace
~FpuControl(); ~FpuControl();
private: private:
#if defined(__GNUC__) && !defined(__APPLE__) && !defined(__arm__) #if defined(__GNUC__) && !defined(__APPLE__) && !defined(__arm__) && !defined(__aarch64__)
fpu_control_t fpu_oldcw, fpu_cw; fpu_control_t fpu_oldcw, fpu_cw;
#elif defined(_WIN32) && !defined(_WIN64) #elif defined(_WIN32) && !defined(_WIN64)
unsigned int fpu_oldcw, fpu_cw; unsigned int fpu_oldcw, fpu_cw;
@ -61,7 +61,7 @@ namespace
FpuControl::FpuControl() FpuControl::FpuControl()
{ {
#if defined(__GNUC__) && !defined(__APPLE__) && !defined(__arm__) #if defined(__GNUC__) && !defined(__APPLE__) && !defined(__arm__) && !defined(__aarch64__)
_FPU_GETCW(fpu_oldcw); _FPU_GETCW(fpu_oldcw);
fpu_cw = (fpu_oldcw & ~_FPU_EXTENDED & ~_FPU_DOUBLE & ~_FPU_SINGLE) | _FPU_SINGLE; fpu_cw = (fpu_oldcw & ~_FPU_EXTENDED & ~_FPU_DOUBLE & ~_FPU_SINGLE) | _FPU_SINGLE;
_FPU_SETCW(fpu_cw); _FPU_SETCW(fpu_cw);
@ -74,7 +74,7 @@ namespace
FpuControl::~FpuControl() FpuControl::~FpuControl()
{ {
#if defined(__GNUC__) && !defined(__APPLE__) && !defined(__arm__) #if defined(__GNUC__) && !defined(__APPLE__) && !defined(__arm__) && !defined(__aarch64__)
_FPU_SETCW(fpu_oldcw); _FPU_SETCW(fpu_oldcw);
#elif defined(_WIN32) && !defined(_WIN64) #elif defined(_WIN32) && !defined(_WIN64)
_controlfp_s(&fpu_cw, fpu_oldcw, _MCW_PC); _controlfp_s(&fpu_cw, fpu_oldcw, _MCW_PC);

@ -51,7 +51,7 @@
#ifndef __OPENCV_TEST_PRECOMP_HPP__ #ifndef __OPENCV_TEST_PRECOMP_HPP__
#define __OPENCV_TEST_PRECOMP_HPP__ #define __OPENCV_TEST_PRECOMP_HPP__
#if defined(__GNUC__) && !defined(__APPLE__) && !defined(__arm__) #if defined(__GNUC__) && !defined(__APPLE__) && !defined(__arm__) && !defined(__aarch64__)
#include <fpu_control.h> #include <fpu_control.h>
#endif #endif

Loading…
Cancel
Save