Blame view

3rdparty/opencv-4.5.4/samples/cpp/simd_basic.cpp 1.56 KB
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
  #include "opencv2/core.hpp"
  #include "opencv2/core/simd_intrinsics.hpp"
  
  using namespace cv;
  
  int main(int /*argc*/, char** /*argv*/)
  {
      printf("==================  macro dump  ===================\n");
  #ifdef CV_SIMD
      printf("CV_SIMD is defined: " CVAUX_STR(CV_SIMD) "\n");
  #ifdef CV_SIMD_WIDTH
      printf("CV_SIMD_WIDTH is defined: " CVAUX_STR(CV_SIMD_WIDTH) "\n");
  #endif
  #ifdef CV_SIMD128
      printf("CV_SIMD128 is defined: " CVAUX_STR(CV_SIMD128) "\n");
  #endif
  #ifdef CV_SIMD256
      printf("CV_SIMD256 is defined: " CVAUX_STR(CV_SIMD256) "\n");
  #endif
  #ifdef CV_SIMD512
      printf("CV_SIMD512 is defined: " CVAUX_STR(CV_SIMD512) "\n");
  #endif
  #ifdef CV_SIMD_64F
      printf("CV_SIMD_64F is defined: " CVAUX_STR(CV_SIMD_64F) "\n");
  #endif
  #ifdef CV_SIMD_FP16
      printf("CV_SIMD_FP16 is defined: " CVAUX_STR(CV_SIMD_FP16) "\n");
  #endif
  #else
      printf("CV_SIMD is NOT defined\n");
  #endif
  
  #ifdef CV_SIMD
      printf("=================  sizeof checks  =================\n");
      printf("sizeof(v_uint8) = %d\n", (int)sizeof(v_uint8));
      printf("sizeof(v_int32) = %d\n", (int)sizeof(v_int32));
      printf("sizeof(v_float32) = %d\n", (int)sizeof(v_float32));
  
      printf("==================  arithm check  =================\n");
      v_uint8 a = vx_setall_u8(10);
      v_uint8 c = a + vx_setall_u8(45);
      printf("(vx_setall_u8(10) + vx_setall_u8(45)).get0() => %d\n", (int)c.get0());
  #else
      printf("\nSIMD intrinsics are not available. Check compilation target and passed build options.\n");
  #endif
  
      printf("=====================  done  ======================\n");
      return 0;
  }