| ... | @@ -621,24 +621,41 @@ test "128-bit multiplication" { | ... | @@ -621,24 +621,41 @@ test "128-bit multiplication" { |
| 621 | test "@addWithOverflow" { | 621 | test "@addWithOverflow" { |
| 622 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | 622 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 623 | | 623 | |
| 624 | var result: u8 = undefined; | 624 | { |
| 625 | try expect(@addWithOverflow(u8, 250, 100, &result)); | 625 | var result: u8 = undefined; |
| 626 | try expect(result == 94); | 626 | try expect(@addWithOverflow(u8, 250, 100, &result)); |
| 627 | try expect(!@addWithOverflow(u8, 100, 150, &result)); | 627 | try expect(result == 94); |
| 628 | try expect(result == 250); | 628 | try expect(!@addWithOverflow(u8, 100, 150, &result)); |
| 629 | | 629 | try expect(result == 250); |
| 630 | var a: u8 = 200; | 630 | |
| 631 | var b: u8 = 99; | 631 | var a: u8 = 200; |
| 632 | try expect(@addWithOverflow(u8, a, b, &result)); | 632 | var b: u8 = 99; |
| 633 | try expect(result == 43); | 633 | try expect(@addWithOverflow(u8, a, b, &result)); |
| 634 | b = 55; | 634 | try expect(result == 43); |
| 635 | try expect(!@addWithOverflow(u8, a, b, &result)); | 635 | b = 55; |
| 636 | try expect(result == 255); | 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 | test "small int addition" { | 657 | test "small int addition" { |
| 640 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | 658 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 641 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | | |
| 642 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 659 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 643 | | 660 | |
| 644 | var x: u2 = 0; | 661 | var x: u2 = 0; |
| ... | @@ -886,19 +903,37 @@ test "@mulWithOverflow bitsize > 32" { | ... | @@ -886,19 +903,37 @@ test "@mulWithOverflow bitsize > 32" { |
| 886 | test "@subWithOverflow" { | 903 | test "@subWithOverflow" { |
| 887 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | 904 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 888 | | 905 | |
| 889 | var result: u8 = undefined; | 906 | { |
| 890 | try expect(@subWithOverflow(u8, 1, 2, &result)); | 907 | var result: u8 = undefined; |
| 891 | try expect(result == 255); | 908 | try expect(@subWithOverflow(u8, 1, 2, &result)); |
| 892 | try expect(!@subWithOverflow(u8, 1, 1, &result)); | 909 | try expect(result == 255); |
| 893 | try expect(result == 0); | 910 | try expect(!@subWithOverflow(u8, 1, 1, &result)); |
| | 911 | try expect(result == 0); |
| 894 | | 912 | |
| 895 | var a: u8 = 1; | 913 | var a: u8 = 1; |
| 896 | var b: u8 = 2; | 914 | var b: u8 = 2; |
| 897 | try expect(@subWithOverflow(u8, a, b, &result)); | 915 | try expect(@subWithOverflow(u8, a, b, &result)); |
| 898 | try expect(result == 255); | 916 | try expect(result == 255); |
| 899 | b = 1; | 917 | b = 1; |
| 900 | try expect(!@subWithOverflow(u8, a, b, &result)); | 918 | try expect(!@subWithOverflow(u8, a, b, &result)); |
| 901 | try expect(result == 0); | 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 | test "@shlWithOverflow" { | 939 | test "@shlWithOverflow" { |