mirror of
https://github.com/opencv/opencv.git
synced 2025-08-06 14:36:36 +08:00
Merge pull request #14756 from mshabunin:fix-avx512-detection
This commit is contained in:
commit
6d62be55b3
@ -1,5 +1,17 @@
|
|||||||
#if defined __AVX512__ || defined __AVX512F__
|
#if defined __AVX512__ || defined __AVX512F__
|
||||||
#include <immintrin.h>
|
#include <immintrin.h>
|
||||||
|
|
||||||
|
// Workaround for problem with GCC 5-6 in -O0 mode
|
||||||
|
struct v_uint32x16
|
||||||
|
{
|
||||||
|
__m512i val;
|
||||||
|
explicit v_uint32x16(__m512i v) : val(v) {}
|
||||||
|
};
|
||||||
|
inline v_uint32x16 operator << (const v_uint32x16& a, int imm)
|
||||||
|
{
|
||||||
|
return v_uint32x16(_mm512_slli_epi32(a.val, imm));
|
||||||
|
}
|
||||||
|
|
||||||
void test()
|
void test()
|
||||||
{
|
{
|
||||||
__m512i zmm = _mm512_setzero_si512();
|
__m512i zmm = _mm512_setzero_si512();
|
||||||
@ -7,10 +19,13 @@ void test()
|
|||||||
__m256i b = _mm256_abs_epi64(a); // VL
|
__m256i b = _mm256_abs_epi64(a); // VL
|
||||||
__m512i c = _mm512_abs_epi8(zmm); // BW
|
__m512i c = _mm512_abs_epi8(zmm); // BW
|
||||||
__m512i d = _mm512_broadcast_i32x8(b); // DQ
|
__m512i d = _mm512_broadcast_i32x8(b); // DQ
|
||||||
|
v_uint32x16 e(d); e = e << 10;
|
||||||
|
__m512i f = _mm512_packus_epi32(d,d);
|
||||||
#if defined __GNUC__ && defined __x86_64__
|
#if defined __GNUC__ && defined __x86_64__
|
||||||
asm volatile ("" : : : "zmm16", "zmm17", "zmm18", "zmm19");
|
asm volatile ("" : : : "zmm16", "zmm17", "zmm18", "zmm19");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#error "AVX512-SKX is not supported"
|
#error "AVX512-SKX is not supported"
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user