diff options
Diffstat (limited to 'config.tests')
24 files changed, 133 insertions, 246 deletions
diff --git a/config.tests/arch/CMakeLists.txt b/config.tests/arch/CMakeLists.txt index 9ef6e37b3b..b2517039df 100644 --- a/config.tests/arch/CMakeLists.txt +++ b/config.tests/arch/CMakeLists.txt @@ -1,3 +1,6 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + cmake_minimum_required(VERSION 3.16) project(arch LANGUAGES CXX) diff --git a/config.tests/arch/arch.cpp b/config.tests/arch/arch.cpp index dfef878426..44ec721432 100644 --- a/config.tests/arch/arch.cpp +++ b/config.tests/arch/arch.cpp @@ -1,6 +1,6 @@ // Copyright (C) 2016 The Qt Company Ltd. // Copyright (C) 2016 Intel Corporation. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// SPDX-License-Identifier: BSD-3-Clause #define QGLOBAL_H #include "../../src/corelib/global/archdetect.cpp" @@ -141,7 +141,7 @@ const char msg2[] = "==Qt=magic=Qt== Sub-architecture:" // Leading-Zero bit count, Intel Core 4th Generation ("Haswell") " lzcnt" #endif -#ifdef __MMX__ +#if defined(__MMX__) && defined(__i386__) // Multimedia Extensions, Pentium MMX, AMD K6-2 " mmx" #endif @@ -198,11 +198,11 @@ const char msg2[] = "==Qt=magic=Qt== Sub-architecture:" // Shadow stack, Intel processor TBA " shstk" #endif -#if defined(__SSE__) || (defined(_M_IX86_FP) && _M_IX86_FP >= 1) || defined(_M_X64) +#if (defined(__SSE__) && defined(__i386__)) || (defined(_M_IX86_FP) && _M_IX86_FP >= 1 && defined(_M_IX86)) // Streaming SIMD Extensions, Intel Pentium III, AMD Athlon " sse" #endif -#if defined(__SSE2__) || (defined(_M_IX86_FP) && _M_IX86_FP >= 2) || defined(_M_X64) +#if (defined(__SSE2__) && defined(__i386__)) || (defined(_M_IX86_FP) && _M_IX86_FP >= 2 && defined(_M_IX86)) // SSE2, Intel Pentium-M, Intel Pentium 4, AMD Opteron and Athlon 64 " sse2" #endif diff --git a/config.tests/binary_for_strip/CMakeLists.txt b/config.tests/binary_for_strip/CMakeLists.txt index 4e22af01a2..2395dfad47 100644 --- a/config.tests/binary_for_strip/CMakeLists.txt +++ b/config.tests/binary_for_strip/CMakeLists.txt @@ -1,3 +1,6 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + cmake_minimum_required(VERSION 3.16) project(proj LANGUAGES CXX) add_library(lib1 SHARED lib1.cpp) diff --git a/config.tests/binary_for_strip/lib1.cpp b/config.tests/binary_for_strip/lib1.cpp index bb57c4da77..d2b7847557 100644 --- a/config.tests/binary_for_strip/lib1.cpp +++ b/config.tests/binary_for_strip/lib1.cpp @@ -1,4 +1,4 @@ // Copyright (C) 2022 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 +// SPDX-License-Identifier: BSD-3-Clause int libfunc() { return 0; } diff --git a/config.tests/cmake_zstd/check_zstd.cmake b/config.tests/cmake_zstd/check_zstd.cmake index 267494f90b..6ab5f15f29 100644 --- a/config.tests/cmake_zstd/check_zstd.cmake +++ b/config.tests/cmake_zstd/check_zstd.cmake @@ -1,3 +1,6 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + file(ARCHIVE_CREATE OUTPUT cmake_zstd.zstd PATHS "${CMAKE_CURRENT_LIST_FILE}" diff --git a/config.tests/direct_extern_access/CMakeLists.txt b/config.tests/direct_extern_access/CMakeLists.txt deleted file mode 100644 index 50a35f1d02..0000000000 --- a/config.tests/direct_extern_access/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ -cmake_minimum_required(VERSION 3.16) -project(direct_extern_access LANGUAGES CXX) - -# this is the test found in https://sourceware.org/bugzilla/show_bug.cgi?id=29087 - -add_library(no_extern_access_lib SHARED lib.cpp) -add_executable(no_extern_access_main main.cpp) -target_compile_options(no_extern_access_lib PUBLIC "-mno-direct-extern-access") -target_link_libraries(no_extern_access_main no_extern_access_lib) diff --git a/config.tests/no_direct_extern_access/CMakeLists.txt b/config.tests/no_direct_extern_access/CMakeLists.txt new file mode 100644 index 0000000000..b4b881f1dc --- /dev/null +++ b/config.tests/no_direct_extern_access/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 3.16) +project(direct_extern_access LANGUAGES CXX) + +# this is the test found in https://sourceware.org/bugzilla/show_bug.cgi?id=29087 +# and https://sourceware.org/bugzilla/show_bug.cgi?id=29377 + +add_library(no_extern_access_lib SHARED lib.cpp) +add_executable(no_extern_access_main other.cpp main.cpp) + +target_compile_options(no_extern_access_lib PRIVATE "-Werror") +target_compile_options(no_extern_access_lib PUBLIC "$<$<CXX_COMPILER_ID:GNU>:-mno-direct-extern-access>") +target_compile_options(no_extern_access_lib PUBLIC "$<$<CXX_COMPILER_ID:Clang>:-fno-direct-access-external-data>") + +target_link_libraries(no_extern_access_main no_extern_access_lib) diff --git a/config.tests/direct_extern_access/lib.cpp b/config.tests/no_direct_extern_access/lib.cpp index 6cbc85571f..cf3b18bb38 100644 --- a/config.tests/direct_extern_access/lib.cpp +++ b/config.tests/no_direct_extern_access/lib.cpp @@ -6,5 +6,6 @@ #define BUILD #include "lib.h" +void *S::ptr = nullptr; S::~S() { } -void S::f() { } +void *S::f() { return ptr; } diff --git a/config.tests/direct_extern_access/lib.h b/config.tests/no_direct_extern_access/lib.h index d35b52f135..1a9c3c5533 100644 --- a/config.tests/direct_extern_access/lib.h +++ b/config.tests/no_direct_extern_access/lib.h @@ -12,5 +12,6 @@ struct LIB_API S { virtual ~S(); - virtual void f(); + virtual void *f(); + static void *ptr; }; diff --git a/config.tests/no_direct_extern_access/main.cpp b/config.tests/no_direct_extern_access/main.cpp new file mode 100644 index 0000000000..541c8b4b33 --- /dev/null +++ b/config.tests/no_direct_extern_access/main.cpp @@ -0,0 +1,20 @@ +// Copyright (C) 2022 Intel Corporation. +// SPDX-License-Identifier: MIT + +// This is combining the tests found in: +// https://sourceware.org/bugzilla/show_bug.cgi?id=29087 +// https://sourceware.org/bugzilla/show_bug.cgi?id=29377 + +#include "lib.h" + +extern void foo(); // other.cpp +void (*get_foo())() +{ + return foo; +} + +struct Local : S { }; +int main() +{ + Local l; +} diff --git a/config.tests/direct_extern_access/main.cpp b/config.tests/no_direct_extern_access/other.cpp index 9cf0323766..ff12b10930 100644 --- a/config.tests/direct_extern_access/main.cpp +++ b/config.tests/no_direct_extern_access/other.cpp @@ -1,12 +1,8 @@ // Copyright (C) 2022 Intel Corporation. // SPDX-License-Identifier: MIT -// This is the test found in https://sourceware.org/bugzilla/show_bug.cgi?id=29087 +// This is the test found in https://sourceware.org/bugzilla/show_bug.cgi?id=29377 -#include "lib.h" - -struct Local : S { }; -int main() +__attribute__((visibility("protected"))) void foo() { - Local l; } diff --git a/config.tests/precompile_header/CMakeLists.txt b/config.tests/precompile_header/CMakeLists.txt index 3009eafd19..d64887594a 100644 --- a/config.tests/precompile_header/CMakeLists.txt +++ b/config.tests/precompile_header/CMakeLists.txt @@ -1,3 +1,6 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + cmake_minimum_required(VERSION 3.16) project(precompile_header LANGUAGES CXX) diff --git a/config.tests/precompile_header/header.h b/config.tests/precompile_header/header.h index 4288ee2731..0e35f8cb85 100644 --- a/config.tests/precompile_header/header.h +++ b/config.tests/precompile_header/header.h @@ -1,5 +1,5 @@ // Copyright (C) 2021 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// SPDX-License-Identifier: BSD-3-Clause #ifndef HEADER_H #define HEADER_H diff --git a/config.tests/precompile_header/main.cpp b/config.tests/precompile_header/main.cpp index e93b02256d..3ea84a8dae 100644 --- a/config.tests/precompile_header/main.cpp +++ b/config.tests/precompile_header/main.cpp @@ -1,5 +1,5 @@ // Copyright (C) 2021 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// SPDX-License-Identifier: BSD-3-Clause #ifndef HEADER_H # error no go #endif diff --git a/config.tests/separate_debug_info/CMakeLists.txt b/config.tests/separate_debug_info/CMakeLists.txt index e75be13e40..1b38d23e25 100644 --- a/config.tests/separate_debug_info/CMakeLists.txt +++ b/config.tests/separate_debug_info/CMakeLists.txt @@ -1,4 +1,6 @@ -# special case skip regeneration +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + cmake_minimum_required(VERSION 3.16) project(objcopytest LANGUAGES CXX) add_executable(objcopytest main.cpp) diff --git a/config.tests/static_link_order/CMakeLists.txt b/config.tests/static_link_order/CMakeLists.txt index b3c122c300..c174fb95db 100644 --- a/config.tests/static_link_order/CMakeLists.txt +++ b/config.tests/static_link_order/CMakeLists.txt @@ -1,3 +1,6 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + # The test represents the order-related issue that we have with the ld linker. # # CMake versions < 3.21.0 produce the following linker line: diff --git a/config.tests/static_link_order/main.cpp b/config.tests/static_link_order/main.cpp index 162c48ce3f..93b8825fd9 100644 --- a/config.tests/static_link_order/main.cpp +++ b/config.tests/static_link_order/main.cpp @@ -1,5 +1,5 @@ // Copyright (C) 2021 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 +// SPDX-License-Identifier: BSD-3-Clause void staticLibFunc1(); diff --git a/config.tests/static_link_order/objlib.cpp b/config.tests/static_link_order/objlib.cpp index 0da71f4552..0ad7b76a80 100644 --- a/config.tests/static_link_order/objlib.cpp +++ b/config.tests/static_link_order/objlib.cpp @@ -1,5 +1,5 @@ // Copyright (C) 2021 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 +// SPDX-License-Identifier: BSD-3-Clause void staticLibFunc2(); diff --git a/config.tests/static_link_order/staticlib1.cpp b/config.tests/static_link_order/staticlib1.cpp index 19caeead5c..f120f9229b 100644 --- a/config.tests/static_link_order/staticlib1.cpp +++ b/config.tests/static_link_order/staticlib1.cpp @@ -1,5 +1,5 @@ // Copyright (C) 2021 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 +// SPDX-License-Identifier: BSD-3-Clause void objLibFunc(); diff --git a/config.tests/static_link_order/staticlib2.cpp b/config.tests/static_link_order/staticlib2.cpp index 61089d53bd..a9abf424fe 100644 --- a/config.tests/static_link_order/staticlib2.cpp +++ b/config.tests/static_link_order/staticlib2.cpp @@ -1,5 +1,5 @@ // Copyright (C) 2021 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 +// SPDX-License-Identifier: BSD-3-Clause void staticLibFunc2() { } diff --git a/config.tests/x86_simd/CMakeLists.txt b/config.tests/x86_simd/CMakeLists.txt index d70f9b54e0..48878d196a 100644 --- a/config.tests/x86_simd/CMakeLists.txt +++ b/config.tests/x86_simd/CMakeLists.txt @@ -1,3 +1,6 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + cmake_minimum_required(VERSION 3.16) project(x86_simd LANGUAGES CXX) diff --git a/config.tests/x86_simd/main.cpp b/config.tests/x86_simd/main.cpp index c7032317dd..8634e29cf2 100644 --- a/config.tests/x86_simd/main.cpp +++ b/config.tests/x86_simd/main.cpp @@ -1,5 +1,5 @@ // Copyright (C) 2017 Intel Corporation. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// SPDX-License-Identifier: BSD-3-Clause // All of our supported compilers support <immintrin.h> #include <immintrin.h> @@ -12,222 +12,6 @@ # define attribute_target(x) #endif -#if T(SSE2) -attribute_target("sse2") void test_sse2() -{ - __m128i a = _mm_setzero_si128(); - _mm_maskmoveu_si128(a, _mm_setzero_si128(), 0); -} -#endif - -#if T(SSE3) -attribute_target("sse3") void test_sse3() -{ - __m128d a = _mm_set1_pd(6.28); - __m128d b = _mm_set1_pd(3.14); - __m128d result = _mm_addsub_pd(a, b); - (void) _mm_movedup_pd(result); -} -#endif - -#if T(SSSE3) -attribute_target("ssse3") void test_ssse3() -{ - __m128i a = _mm_set1_epi32(42); - _mm_abs_epi8(a); - (void) _mm_sign_epi16(a, _mm_set1_epi32(64)); -} -#endif - -#if T(SSE4_1) -attribute_target("sse4.1") void test_sse4_1() -{ - __m128 a = _mm_setzero_ps(); - _mm_ceil_ps(a); - __m128i result = _mm_mullo_epi32(_mm_set1_epi32(42), _mm_set1_epi32(64)); - (void)result; -} -#endif - -#if T(SSE4_2) -attribute_target("sse4.2") void test_sse4_2() -{ - __m128i a = _mm_setzero_si128(); - __m128i b = _mm_set1_epi32(42); - (void) _mm_cmpestrm(a, 16, b, 16, 0); -} -#endif - -#if T(AESNI) -attribute_target("aes,sse4.2") void test_aesni() -{ - __m128i a = _mm_setzero_si128(); - __m128i b = _mm_aesenc_si128(a, a); - __m128i c = _mm_aesdec_si128(a, b); - (void)c; -} -#endif - -#if T(F16C) -attribute_target("f16c") void test_f16c() -{ - __m128i a = _mm_setzero_si128(); - __m128 b = _mm_cvtph_ps(a); - __m256 b256 = _mm256_cvtph_ps(a); - (void) _mm_cvtps_ph(b, 0); - (void) _mm256_cvtps_ph(b256, 0); -} -#endif - -#if T(RDRND) -attribute_target("rdrnd") int test_rdrnd() -{ - unsigned short us; - unsigned int ui; - if (_rdrand16_step(&us)) - return 1; - if (_rdrand32_step(&ui)) - return 1; -# if defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || defined(_M_X64) - unsigned long long ull; - if (_rdrand64_step(&ull)) - return 1; -# endif -} -#endif - -#if T(RDSEED) -attribute_target("rdseed") int test_rdseed() -{ - unsigned short us; - unsigned int ui; - if (_rdseed16_step(&us)) - return 1; - if (_rdseed32_step(&ui)) - return 1; -# if defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || defined(_M_X64) - unsigned long long ull; - if (_rdseed64_step(&ull)) - return 1; -# endif -} -#endif - -#if T(SHANI) -attribute_target("sha") void test_shani() -{ - __m128i a = _mm_setzero_si128(); - __m128i b = _mm_sha1rnds4_epu32(a, a, 0); - __m128i c = _mm_sha1msg1_epu32(a, b); - __m128i d = _mm_sha256msg2_epu32(b, c); - (void)d; -} -#endif - -#if T(AVX) -attribute_target("avx") void test_avx() -{ - __m256d a = _mm256_setzero_pd(); - __m256d b = _mm256_set1_pd(42.42); - (void) _mm256_add_pd(a, b); -} -#endif - -#if T(AVX2) -attribute_target("avx2") void test_avx2() -{ - _mm256_zeroall(); - __m256i a = _mm256_setzero_si256(); - __m256i b = _mm256_and_si256(a, a); - (void) _mm256_add_epi8(a, b); -} -#endif - -#if T(AVX512F) -attribute_target("avx512f") void test_avx512f(char *ptr) -{ - /* AVX512 Foundation */ - __mmask16 m = ~1; - __m512i i; - __m512d d; - __m512 f; - i = _mm512_maskz_loadu_epi32(0, ptr); - d = _mm512_loadu_pd((double *)ptr + 64); - f = _mm512_loadu_ps((float *)ptr + 128); - _mm512_mask_storeu_epi64(ptr, m, i); - _mm512_mask_storeu_ps(ptr + 64, m, f); - _mm512_mask_storeu_pd(ptr + 128, m, d); -} -#endif - -#if T(AVX512ER) -attribute_target("avx512er") void test_avx512er() -{ - /* AVX512 Exponential and Reciprocal */ - __m512 f; - f = _mm512_exp2a23_round_ps(f, 8); -} -#endif - -#if T(AVX512CD) -attribute_target("avx512cd") void test_avx512cd() -{ - /* AVX512 Conflict Detection */ - __mmask16 m = ~1; - __m512i i; - i = _mm512_maskz_conflict_epi32(m, i); -} -#endif - -#if T(AVX512PF) -attribute_target("avx512pf") void test_avx512pf(void *ptr) -{ - /* AVX512 Prefetch */ - __m512i i; - __mmask16 m = 0xf; - _mm512_mask_prefetch_i64scatter_pd(ptr, m, i, 2, 2); -} -#endif - -#if T(AVX512DQ) -attribute_target("avx512dq") void test_avx512dq() -{ - /* AVX512 Doubleword and Quadword support */ - __m512i i; - __mmask16 m = ~1; - m = _mm512_movepi32_mask(i); -} -#endif - -#if T(AVX512BW) -attribute_target("avx512bw") void test_avx512bw(char *ptr) -{ - /* AVX512 Byte and Word support */ - __m512i i; - __mmask16 m = ~1; - i = _mm512_mask_loadu_epi8(i, m, ptr - 8); -} -#endif - -#if T(AVX512VL) -attribute_target("avx512vl") void test_avx512vl(char *ptr) -{ - /* AVX512 Vector Length */ - __mmask16 m = ~1; - __m256i i2 = _mm256_maskz_loadu_epi32(0, ptr); - _mm256_mask_storeu_epi32(ptr + 1, m, i2); -} -#endif - -#if T(AVX512IFMA) -attribute_target("avx512ifma") void test_avx512ifma() -{ - /* AVX512 Integer Fused Multiply-Add */ - __m512i i; - i = _mm512_madd52lo_epu64(i, i, i); -} -#endif - #if T(AVX512VBMI2) attribute_target("avx512vl,avx512vbmi2") void test_avx512vbmi2() { diff --git a/config.tests/x86intrin/CMakeLists.txt b/config.tests/x86intrin/CMakeLists.txt new file mode 100644 index 0000000000..1d5beac5ec --- /dev/null +++ b/config.tests/x86intrin/CMakeLists.txt @@ -0,0 +1,12 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + +cmake_minimum_required(VERSION 3.16) +project(x86intrin LANGUAGES CXX) +add_executable(x86intrin main.cpp) +if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU|IntelLLVM|QCC") + target_compile_options(x86intrin PUBLIC + "-march=cannonlake" "-mrdrnd" "-mrdseed" "-maes" "-msha" "-w") +elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + target_compile_options(x86intrin PUBLIC "-arch:AVX512" "-W0") +endif() diff --git a/config.tests/x86intrin/main.cpp b/config.tests/x86intrin/main.cpp new file mode 100644 index 0000000000..2e6b198710 --- /dev/null +++ b/config.tests/x86intrin/main.cpp @@ -0,0 +1,48 @@ +// Copyright (C) 2022 Intel Corporation. +// SPDX-License-Identifier: BSD-3-Clause + +#include <immintrin.h> + +// Skylake AVX512 was added to GCC 4.9, Clang 3.7, and MSVC 2015. +// Cannon Lake was added to GCC 5, Clang 3.8, and MSVC 2017 15.7, +// so that's our minimum. +// Ice Lake was completed with GCC 8, Clang 6, and MSVC 2017 15.8. + +int test(int argc, char **argv) +{ + unsigned randomvalue; + _rdrand32_step(&randomvalue); // RDRND (IVB) +#ifndef __QNXNTO__ // buggy compiler is missing this intrinsic, but we allow it + _rdseed32_step(&randomvalue); // RDSEED (BDW) +#endif + unsigned mask = _blsmsk_u32(argc); // BMI (HSW) + int clz = _lzcnt_u32(mask); // LZCNT (HSW) + int ctz = _tzcnt_u32(mask); // BMI (HSW) + mask = _bzhi_u32(-1, argc); // BMI2 (HSW) + + __m128d d = _mm_setzero_pd(); // SSE2 + d = _mm_cvtsi32_sd(d, argc); // SSE2 + __m256d d2 = _mm256_broadcastsd_pd(d); // AVX (SNB) + d2 = _mm256_fmadd_pd(d2, d2, d2); // FMA (HSW) + + __m128 f = _mm256_cvtpd_ps(d2); // AVX (SNB) + __m128i a = _mm_cvtps_ph(f, 0); // F16C (IVB) + __m128i b = _mm_aesenc_si128(a, a); // AESNI (WSM) + __m128i c = _mm_sha1rnds4_epu32(a, a, 0); // SHA (CNL) + __m128i e = _mm_sha1msg1_epu32(a, b); // SHA (CNL) + __m128i g = _mm_sha256msg2_epu32(b, c); // SHA (CNL) + + __m512i zero = _mm512_setzero_si512(); // AVX512F (SKX) + __m512i data = _mm512_maskz_loadu_epi8(mask, argv[0]); // AVX512BW (SKX) + __m256i ptrs = _mm256_maskz_loadu_epi64(mask, argv); // AVX512VL (SKX) + __m512i data2 = _mm512_broadcast_i64x4(ptrs); // AVX512DQ (SKX) + __m256i data3 = _mm256_madd52lo_epu64(ptrs, ptrs, ptrs);// AVX512IFMA (CNL) + data2 = _mm512_multishift_epi64_epi8(data, data2); // AVX512VBMI (CNL) + + return _mm256_extract_epi32(data3, 0); // AVX2 (HSW) +} + +int main(int argc, char **argv) +{ + return test(argc, argv); +} |