diff --git a/crates/xenia-cpu/src/overflow.rs b/crates/xenia-cpu/src/overflow.rs index a55f505..79bba9c 100644 --- a/crates/xenia-cpu/src/overflow.rs +++ b/crates/xenia-cpu/src/overflow.rs @@ -162,6 +162,11 @@ mod tests { fn mulld_overflows() { assert!(mulld_ov(i64::MAX, 2)); assert!(!mulld_ov(i64::MAX, 1)); + // PPCBUG-022: INT_MIN * -1 overflows (=-INT_MIN > INT_MAX). + // checked_mul correctly returns None for this case. + assert!(mulld_ov(i64::MIN, -1), "INT_MIN * -1 overflows i64"); + assert!(!mulld_ov(i64::MIN, 1)); + assert!(!mulld_ov(i64::MIN + 1, -1), "INT_MIN+1 * -1 = INT_MAX, no overflow"); } #[test]