| ... | @@ -690,6 +690,30 @@ test "extensive @mulWithOverflow" { | ... | @@ -690,6 +690,30 @@ test "extensive @mulWithOverflow" { |
| 690 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 690 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 691 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 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 | var a: u8 = 3; | 718 | var a: u8 = 3; |
| 695 | var b: u8 = 85; | 719 | var b: u8 = 85; |
| ... | @@ -715,6 +739,30 @@ test "extensive @mulWithOverflow" { | ... | @@ -715,6 +739,30 @@ test "extensive @mulWithOverflow" { |
| 715 | try expect(res == 127); | 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 | var a: u16 = 3; | 767 | var a: u16 = 3; |
| 720 | var b: u16 = 0x5555; | 768 | var b: u16 = 0x5555; |