opencv
1#if defined __AVX512__ || defined __AVX512F__
2#include <immintrin.h>
3
4// Workaround for problem with GCC 5-6 in -O0 mode
5struct v_uint32x16
6{
7__m512i val;
8explicit v_uint32x16(__m512i v) : val(v) {}
9};
10inline v_uint32x16 operator << (const v_uint32x16& a, int imm)
11{
12return v_uint32x16(_mm512_slli_epi32(a.val, imm));
13}
14
15void 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
22v_uint32x16 e(d); e = e << 10;
23__m512i f = _mm512_packus_epi32(d,d);
24#if defined __GNUC__ && defined __x86_64__
25asm volatile ("" : : : "zmm16", "zmm17", "zmm18", "zmm19");
26#endif
27}
28
29#else
30#error "AVX512-SKX is not supported"
31#endif
32int main() { return 0; }
33