Blame view

3rdparty/opencv-4.5.4/cmake/checks/cpu_neon.cpp 724 Bytes
f4334277   Hu Chunming   提交3rdparty
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
  #include <stdio.h>
  
  #if defined _WIN32 && (defined(_M_ARM) || defined(_M_ARM64))
  # include <Intrin.h>
  # include <arm_neon.h>
  # define CV_NEON 1
  #elif defined(__ARM_NEON__) || (defined (__ARM_NEON) && defined(__aarch64__))
  #  include <arm_neon.h>
  #  define CV_NEON 1
  #endif
  
  // MSVC 2019 bug. Details: https://github.com/opencv/opencv/pull/16027
  void test_aliased_type(const uint8x16_t& a) { }
  void test_aliased_type(const int8x16_t& a) { }
  
  #if defined CV_NEON
  int test()
  {
      const float src[] = { 0.0f, 0.0f, 0.0f, 0.0f };
      float32x4_t val = vld1q_f32((const float32_t*)(src));
      return (int)vgetq_lane_f32(val, 0);
  }
  #else
  #error "NEON is not supported"
  #endif
  
  int main()
  {
    printf("%d\n", test());
    return 0;
  }