Skip to content

Commit 15a1ec7

Browse files
committed
Change _mm_mpsadbw_epu8 to work with unsigned integers
1 parent 53ea8be commit 15a1ec7

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

src/x86/sse41.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -783,7 +783,7 @@ pub unsafe fn _mm_minpos_epu16(a: u16x8) -> u16x8 {
783783
#[inline(always)]
784784
#[target_feature = "+sse4.1"]
785785
#[cfg_attr(test, assert_instr(mpsadbw, imm8=0))]
786-
pub unsafe fn _mm_mpsadbw_epu8(a: i8x16, b: i8x16, imm8: u8) -> i16x8 {
786+
pub unsafe fn _mm_mpsadbw_epu8(a: u8x16, b: u8x16, imm8: u8) -> u16x8 {
787787
macro_rules! call {
788788
($imm8:expr) => { mpsadbw(a, b, $imm8) }
789789
}
@@ -840,7 +840,7 @@ extern "C" {
840840
#[link_name = "llvm.x86.sse41.phminposuw"]
841841
fn phminposuw(a: u16x8) -> u16x8;
842842
#[link_name = "llvm.x86.sse41.mpsadbw"]
843-
fn mpsadbw(a: i8x16, b: i8x16, imm8: u8) -> i16x8;
843+
fn mpsadbw(a: u8x16, b: u8x16, imm8: u8) -> u16x8;
844844
}
845845

846846
#[cfg(test)]
@@ -1432,26 +1432,26 @@ mod tests {
14321432

14331433
#[simd_test = "sse4.1"]
14341434
unsafe fn _mm_mpsadbw_epu8() {
1435-
let a = i8x16::new(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
1435+
let a = u8x16::new(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
14361436

14371437
let r = sse41::_mm_mpsadbw_epu8(a, a, 0b000);
1438-
let e = i16x8::new(0, 4, 8, 12, 16, 20, 24, 28);
1438+
let e = u16x8::new(0, 4, 8, 12, 16, 20, 24, 28);
14391439
assert_eq!(r, e);
14401440

14411441
let r = sse41::_mm_mpsadbw_epu8(a, a, 0b001);
1442-
let e = i16x8::new(16, 12, 8, 4, 0, 4, 8, 12);
1442+
let e = u16x8::new(16, 12, 8, 4, 0, 4, 8, 12);
14431443
assert_eq!(r, e);
14441444

14451445
let r = sse41::_mm_mpsadbw_epu8(a, a, 0b100);
1446-
let e = i16x8::new(16, 20, 24, 28, 32, 36, 40, 44);
1446+
let e = u16x8::new(16, 20, 24, 28, 32, 36, 40, 44);
14471447
assert_eq!(r, e);
14481448

14491449
let r = sse41::_mm_mpsadbw_epu8(a, a, 0b101);
1450-
let e = i16x8::new(0, 4, 8, 12, 16, 20, 24, 28);
1450+
let e = u16x8::new(0, 4, 8, 12, 16, 20, 24, 28);
14511451
assert_eq!(r, e);
14521452

14531453
let r = sse41::_mm_mpsadbw_epu8(a, a, 0b111);
1454-
let e = i16x8::new(32, 28, 24, 20, 16, 12, 8, 4);
1454+
let e = u16x8::new(32, 28, 24, 20, 16, 12, 8, 4);
14551455
assert_eq!(r, e);
14561456
}
14571457
}

0 commit comments

Comments
 (0)