From e8d5cbd60f22c0653eac3ed7662d60621b7df6ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20S=C3=A1nchez=20Mu=C3=B1oz?= Date: Mon, 16 Oct 2023 18:54:57 +0200 Subject: [PATCH] Extend _mm_maddubs_epi16 test to check widening and saturating behavior --- .../stdarch/crates/core_arch/src/x86/ssse3.rs | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/library/stdarch/crates/core_arch/src/x86/ssse3.rs b/library/stdarch/crates/core_arch/src/x86/ssse3.rs index bd6944a3759e..8fe2390aa314 100644 --- a/library/stdarch/crates/core_arch/src/x86/ssse3.rs +++ b/library/stdarch/crates/core_arch/src/x86/ssse3.rs @@ -568,6 +568,27 @@ mod tests { let expected = _mm_setr_epi16(130, 24, 192, 194, 158, 175, 66, 120); let r = _mm_maddubs_epi16(a, b); assert_eq_m128i(r, expected); + + // Test widening and saturation + #[rustfmt::skip] + let a = _mm_setr_epi8( + u8::MAX as i8, u8::MAX as i8, + u8::MAX as i8, u8::MAX as i8, + u8::MAX as i8, u8::MAX as i8, + 100, 100, 0, 0, + 0, 0, 0, 0, 0, 0, + ); + #[rustfmt::skip] + let b = _mm_setr_epi8( + i8::MAX, i8::MAX, + i8::MAX, i8::MIN, + i8::MIN, i8::MIN, + 50, 15, 0, 0, 0, + 0, 0, 0, 0, 0, + ); + let expected = _mm_setr_epi16(i16::MAX, -255, i16::MIN, 6500, 0, 0, 0, 0); + let r = _mm_maddubs_epi16(a, b); + assert_eq_m128i(r, expected); } #[simd_test(enable = "ssse3")]