| ... | ... | @@ -690,6 +690,30 @@ test "extensive @mulWithOverflow" { |
| 690 | 690 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 691 | 691 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 692 | 692 | |
| 693 | { |
| 694 | var a: u5 = 3; |
| 695 | var b: u5 = 10; |
| 696 | var res: u5 = undefined; |
| 697 | try expect(!@mulWithOverflow(u5, a, b, &res)); |
| 698 | try expect(res == 30); |
| 699 | |
| 700 | b = 11; |
| 701 | try expect(@mulWithOverflow(u5, a, b, &res)); |
| 702 | try expect(res == 1); |
| 703 | } |
| 704 | |
| 705 | { |
| 706 | var a: i5 = 3; |
| 707 | var b: i5 = -5; |
| 708 | var res: i5 = undefined; |
| 709 | try expect(!@mulWithOverflow(i5, a, b, &res)); |
| 710 | try expect(res == -15); |
| 711 | |
| 712 | b = -6; |
| 713 | try expect(@mulWithOverflow(i5, a, b, &res)); |
| 714 | try expect(res == 14); |
| 715 | } |
| 716 | |
| 693 | 717 | { |
| 694 | 718 | var a: u8 = 3; |
| 695 | 719 | var b: u8 = 85; |
| ... | ... | @@ -715,6 +739,30 @@ test "extensive @mulWithOverflow" { |
| 715 | 739 | try expect(res == 127); |
| 716 | 740 | } |
| 717 | 741 | |
| 742 | { |
| 743 | var a: u14 = 3; |
| 744 | var b: u14 = 0x1555; |
| 745 | var res: u14 = undefined; |
| 746 | try expect(!@mulWithOverflow(u14, a, b, &res)); |
| 747 | try expect(res == 0x3fff); |
| 748 | |
| 749 | b = 0x1556; |
| 750 | try expect(@mulWithOverflow(u14, a, b, &res)); |
| 751 | try expect(res == 2); |
| 752 | } |
| 753 | |
| 754 | { |
| 755 | var a: i14 = 3; |
| 756 | var b: i14 = -0xaaa; |
| 757 | var res: i14 = undefined; |
| 758 | try expect(!@mulWithOverflow(i14, a, b, &res)); |
| 759 | try expect(res == -0x1ffe); |
| 760 | |
| 761 | b = -0xaab; |
| 762 | try expect(@mulWithOverflow(i14, a, b, &res)); |
| 763 | try expect(res == 0x1fff); |
| 764 | } |
| 765 | |
| 718 | 766 | { |
| 719 | 767 | var a: u16 = 3; |
| 720 | 768 | var b: u16 = 0x5555; |