From 30a2b01c0527f3a47005d889d77ac33f0f2c2808 Mon Sep 17 00:00:00 2001 From: Henry de Valence Date: Thu, 14 Jun 2018 14:19:46 -0700 Subject: [PATCH] Add more selectors to the Lanes enum --- src/backend/avx2/field.rs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/backend/avx2/field.rs b/src/backend/avx2/field.rs index 331baf3..13a6156 100644 --- a/src/backend/avx2/field.rs +++ b/src/backend/avx2/field.rs @@ -34,6 +34,8 @@ pub enum Lanes { D, AB, CD, + AD, + BC, ALL, } @@ -49,6 +51,10 @@ fn blend_lanes(x: u32x8, y: u32x8, control: Lanes) -> u32x8 { Lanes::D => { _mm256_blend_epi32(x.into_bits(), y.into_bits(), D_LANES as i32).into_bits() } + Lanes::AD => { + _mm256_blend_epi32(x.into_bits(), y.into_bits(), (A_LANES | D_LANES) as i32) + .into_bits() + } Lanes::AB => { _mm256_blend_epi32(x.into_bits(), y.into_bits(), (A_LANES | B_LANES) as i32) .into_bits() @@ -57,9 +63,15 @@ fn blend_lanes(x: u32x8, y: u32x8, control: Lanes) -> u32x8 { _mm256_blend_epi32(x.into_bits(), y.into_bits(), (C_LANES | D_LANES) as i32) .into_bits() } - Lanes::ALL => { - _mm256_blend_epi32(x.into_bits(), y.into_bits(), ALL_LANES as i32).into_bits() + Lanes::BC => { + _mm256_blend_epi32(x.into_bits(), y.into_bits(), (B_LANES | C_LANES) as i32) + .into_bits() } + Lanes::ALL => _mm256_blend_epi32( + x.into_bits(), + y.into_bits(), + (A_LANES | B_LANES | C_LANES | D_LANES) as i32, + ).into_bits(), } } }