| ... | ... | @@ -621,24 +621,41 @@ test "128-bit multiplication" { |
| 621 | 621 | test "@addWithOverflow" { |
| 622 | 622 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 623 | 623 | |
| 624 | | var result: u8 = undefined; |
| 625 | | try expect(@addWithOverflow(u8, 250, 100, &result)); |
| 626 | | try expect(result == 94); |
| 627 | | try expect(!@addWithOverflow(u8, 100, 150, &result)); |
| 628 | | try expect(result == 250); |
| 629 | | |
| 630 | | var a: u8 = 200; |
| 631 | | var b: u8 = 99; |
| 632 | | try expect(@addWithOverflow(u8, a, b, &result)); |
| 633 | | try expect(result == 43); |
| 634 | | b = 55; |
| 635 | | try expect(!@addWithOverflow(u8, a, b, &result)); |
| 636 | | try expect(result == 255); |
| 624 | { |
| 625 | var result: u8 = undefined; |
| 626 | try expect(@addWithOverflow(u8, 250, 100, &result)); |
| 627 | try expect(result == 94); |
| 628 | try expect(!@addWithOverflow(u8, 100, 150, &result)); |
| 629 | try expect(result == 250); |
| 630 | |
| 631 | var a: u8 = 200; |
| 632 | var b: u8 = 99; |
| 633 | try expect(@addWithOverflow(u8, a, b, &result)); |
| 634 | try expect(result == 43); |
| 635 | b = 55; |
| 636 | try expect(!@addWithOverflow(u8, a, b, &result)); |
| 637 | try expect(result == 255); |
| 638 | } |
| 639 | |
| 640 | { |
| 641 | var a: usize = 6; |
| 642 | var b: usize = 6; |
| 643 | var res: usize = undefined; |
| 644 | try expect(!@addWithOverflow(usize, a, b, &res)); |
| 645 | try expect(res == 12); |
| 646 | } |
| 647 | |
| 648 | { |
| 649 | var a: isize = -6; |
| 650 | var b: isize = -6; |
| 651 | var res: isize = undefined; |
| 652 | try expect(!@addWithOverflow(isize, a, b, &res)); |
| 653 | try expect(res == -12); |
| 654 | } |
| 637 | 655 | } |
| 638 | 656 | |
| 639 | 657 | test "small int addition" { |
| 640 | 658 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 641 | | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 642 | 659 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 643 | 660 | |
| 644 | 661 | var x: u2 = 0; |
| ... | ... | @@ -886,19 +903,37 @@ test "@mulWithOverflow bitsize > 32" { |
| 886 | 903 | test "@subWithOverflow" { |
| 887 | 904 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 888 | 905 | |
| 889 | | var result: u8 = undefined; |
| 890 | | try expect(@subWithOverflow(u8, 1, 2, &result)); |
| 891 | | try expect(result == 255); |
| 892 | | try expect(!@subWithOverflow(u8, 1, 1, &result)); |
| 893 | | try expect(result == 0); |
| 906 | { |
| 907 | var result: u8 = undefined; |
| 908 | try expect(@subWithOverflow(u8, 1, 2, &result)); |
| 909 | try expect(result == 255); |
| 910 | try expect(!@subWithOverflow(u8, 1, 1, &result)); |
| 911 | try expect(result == 0); |
| 894 | 912 | |
| 895 | | var a: u8 = 1; |
| 896 | | var b: u8 = 2; |
| 897 | | try expect(@subWithOverflow(u8, a, b, &result)); |
| 898 | | try expect(result == 255); |
| 899 | | b = 1; |
| 900 | | try expect(!@subWithOverflow(u8, a, b, &result)); |
| 901 | | try expect(result == 0); |
| 913 | var a: u8 = 1; |
| 914 | var b: u8 = 2; |
| 915 | try expect(@subWithOverflow(u8, a, b, &result)); |
| 916 | try expect(result == 255); |
| 917 | b = 1; |
| 918 | try expect(!@subWithOverflow(u8, a, b, &result)); |
| 919 | try expect(result == 0); |
| 920 | } |
| 921 | |
| 922 | { |
| 923 | var a: usize = 6; |
| 924 | var b: usize = 6; |
| 925 | var res: usize = undefined; |
| 926 | try expect(!@subWithOverflow(usize, a, b, &res)); |
| 927 | try expect(res == 0); |
| 928 | } |
| 929 | |
| 930 | { |
| 931 | var a: isize = -6; |
| 932 | var b: isize = -6; |
| 933 | var res: isize = undefined; |
| 934 | try expect(!@subWithOverflow(isize, a, b, &res)); |
| 935 | try expect(res == 0); |
| 936 | } |
| 902 | 937 | } |
| 903 | 938 | |
| 904 | 939 | test "@shlWithOverflow" { |