Skip to content

Commit 574f3d3

Browse files
eduardosmAmanieu
authored andcommitted
Extend _mm_madd_epi16 test to check cases with large values.
1 parent 68b3ddf commit 574f3d3

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

crates/core_arch/src/x86/sse2.rs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3139,6 +3139,32 @@ mod tests {
31393139
let r = _mm_madd_epi16(a, b);
31403140
let e = _mm_setr_epi32(29, 81, 149, 233);
31413141
assert_eq_m128i(r, e);
3142+
3143+
// Test large values.
3144+
// MIN*MIN+MIN*MIN will overflow into i32::MIN.
3145+
let a = _mm_setr_epi16(
3146+
i16::MAX,
3147+
i16::MAX,
3148+
i16::MIN,
3149+
i16::MIN,
3150+
i16::MIN,
3151+
i16::MAX,
3152+
0,
3153+
0,
3154+
);
3155+
let b = _mm_setr_epi16(
3156+
i16::MAX,
3157+
i16::MAX,
3158+
i16::MIN,
3159+
i16::MIN,
3160+
i16::MAX,
3161+
i16::MIN,
3162+
0,
3163+
0,
3164+
);
3165+
let r = _mm_madd_epi16(a, b);
3166+
let e = _mm_setr_epi32(0x7FFE0002, i32::MIN, -0x7FFF0000, 0);
3167+
assert_eq_m128i(r, e);
31423168
}
31433169

31443170
#[simd_test(enable = "sse2")]

0 commit comments

Comments
 (0)