opencv

Форк
0
/
cpu_fp16.cpp 
34 строки · 953.0 Байт
1
#include <stdio.h>
2

3
#if defined __F16C__ || (defined _MSC_VER && _MSC_VER >= 1700 && defined __AVX__) || (defined __INTEL_COMPILER && defined __AVX__)
4
#include <immintrin.h>
5
int test()
6
{
7
    const float src[] = { 0.0f, 0.0f, 0.0f, 0.0f };
8
    short dst[8];
9
    __m128 v_src = _mm_load_ps(src);
10
    __m128i v_dst = _mm_cvtps_ph(v_src, 0);
11
    _mm_storel_epi64((__m128i*)dst, v_dst);
12
    return (int)dst[0];
13
}
14
#elif (defined __GNUC__ && (defined __arm__ || defined __aarch64__)) /*|| (defined _MSC_VER && defined _M_ARM64)*/
15
// Windows + ARM64 case disabled: https://github.com/opencv/opencv/issues/25052
16
#include "arm_neon.h"
17
int test()
18
{
19
    const float src[] = { 0.0f, 0.0f, 0.0f, 0.0f };
20
    short dst[8];
21
    float32x4_t v_src = *(float32x4_t*)src;
22
    float16x4_t v_dst = vcvt_f16_f32(v_src);
23
    *(float16x4_t*)dst = v_dst;
24
    return (int)dst[0];
25
}
26
#else
27
#error "FP16 is not supported"
28
#endif
29

30
int main()
31
{
32
  printf("%d\n", test());
33
  return 0;
34
}
35

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.