Skip to content

Instantly share code, notes, and snippets.

@merryhime
Created January 13, 2017 00:45
Show Gist options
  • Save merryhime/88e8cef10af08f0ea0f7ba6d364fe957 to your computer and use it in GitHub Desktop.
Save merryhime/88e8cef10af08f0ea0f7ba6d364fe957 to your computer and use it in GitHub Desktop.
BbAa contains BBBBbbbbAAAAaaaa
DdCc contains DDDDddddCCCCcccc
we want: DDDDCCCCBBBBAAAA
we want: ddddccccbbbbaaaa
const auto process_pair = [](const __m256i BbAa, const __m256i DdCc) {
const __m256i DbCa = _mm256_blend_epi32(BbAa, DdCc, 0b11001100);
const __m256i dBcA = _mm256_blend_epi32(BbAa, DdCc, 0b00110011);
const __m256i DCba = _mm256_permute4x64_epi64(DbCa, 0b11011000);
const __m256i dcBA = _mm256_permute4x64_epi64(dBcA, 0b11011000);
const __m256i DCBA = _mm256_blend_epi32(DCba, dcBA, 0b00001111);
const __m256i dcba = _mm256_blend_epi32(DCba, dcBA, 0b11110000);
return std::make_tuple(dcba, DCBA);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment