opencv

Форк
0
/
cpu_avx512skx.cpp 
32 строки · 834.0 Байт
1
#if defined __AVX512__ || defined __AVX512F__
2
#include <immintrin.h>
3

4
// Workaround for problem with GCC 5-6 in -O0 mode
5
struct v_uint32x16
6
{
7
    __m512i val;
8
    explicit v_uint32x16(__m512i v) : val(v) {}
9
};
10
inline v_uint32x16 operator << (const v_uint32x16& a, int imm)
11
{
12
    return v_uint32x16(_mm512_slli_epi32(a.val, imm));
13
}
14

15
void test()
16
{
17
    __m512i zmm = _mm512_setzero_si512();
18
    __m256i a = _mm256_setzero_si256();
19
    __m256i b = _mm256_abs_epi64(a); // VL
20
    __m512i c = _mm512_abs_epi8(zmm); // BW
21
    __m512i d = _mm512_broadcast_i32x8(b); // DQ
22
    v_uint32x16 e(d); e = e << 10;
23
    __m512i f = _mm512_packus_epi32(d,d);
24
#if defined __GNUC__ && defined __x86_64__
25
    asm volatile ("" : : : "zmm16", "zmm17", "zmm18", "zmm19");
26
#endif
27
}
28

29
#else
30
#error "AVX512-SKX is not supported"
31
#endif
32
int main() { return 0; }
33

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

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

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

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