Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Arahan AVX2 dan BMI2 Boleh Mengoptimumkan Pembungkusan Kiri Berdasarkan Topeng?
Menggunakan AVX2 dan BMI2 untuk Pembungkusan Kiri Yang Cekap Berdasarkan Topeng
Dalam AVX2, kita boleh memanfaatkan arahan vpermps (_mm256_permutevar8x32_ps) ubah-shuffle lintasan lorong. Selain itu, BMI2 memberikan kami pext (Ekstrak Bit Selari), membolehkan kami melakukan operasi pengekstrakan bitwise yang penting untuk masalah kami.
Algoritma:
Kod Pelaksanaan:
#include <stdint.h> #include <immintrin.h> __m256 compress256(__m256 src, unsigned int mask) { uint64_t expanded_mask = _pdep_u64(mask, 0x0101010101010101); expanded_mask *= 0xFF; const uint64_t identity_indices = 0x0706050403020100; uint64_t wanted_indices = _pext_u64(identity_indices, expanded_mask); __m128i bytevec = _mm_cvtsi64_si128(wanted_indices); __m256i shufmask = _mm256_cvtepu8_epi32(bytevec); return _mm256_permutevar8x32_ps(src, shufmask); }
Kelebihan:
Kelemahan:
Atas ialah kandungan terperinci Bagaimanakah Arahan AVX2 dan BMI2 Boleh Mengoptimumkan Pembungkusan Kiri Berdasarkan Topeng?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!