diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2022-05-14 21:24:48 +0200 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2022-05-16 13:55:26 -0700 |
| commit | 852c82084163eec9911384b325dbd5713ee4df90 (patch) | |
| tree | 677c9aa46b7e821aaeb7e4aa32bfb76b1e04295c /test/behavior/math.zig | |
| parent | a84be7e988c91606bc42e1e1c8a34bbdcdb8a3f1 (diff) | |
| download | zig-852c82084163eec9911384b325dbd5713ee4df90.tar.gz zig-852c82084163eec9911384b325dbd5713ee4df90.zip | |
aarch64: sub_with_overflow should always track V flag
Diffstat (limited to 'test/behavior/math.zig')
| -rw-r--r-- | test/behavior/math.zig | 87 |
1 files changed, 61 insertions, 26 deletions
diff --git a/test/behavior/math.zig b/test/behavior/math.zig index 011c714935..2f8cf06ee7 100644 --- a/test/behavior/math.zig +++ b/test/behavior/math.zig @@ -621,24 +621,41 @@ test "128-bit multiplication" { test "@addWithOverflow" { if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO - var result: u8 = undefined; - try expect(@addWithOverflow(u8, 250, 100, &result)); - try expect(result == 94); - try expect(!@addWithOverflow(u8, 100, 150, &result)); - try expect(result == 250); - - var a: u8 = 200; - var b: u8 = 99; - try expect(@addWithOverflow(u8, a, b, &result)); - try expect(result == 43); - b = 55; - try expect(!@addWithOverflow(u8, a, b, &result)); - try expect(result == 255); + { + var result: u8 = undefined; + try expect(@addWithOverflow(u8, 250, 100, &result)); + try expect(result == 94); + try expect(!@addWithOverflow(u8, 100, 150, &result)); + try expect(result == 250); + + var a: u8 = 200; + var b: u8 = 99; + try expect(@addWithOverflow(u8, a, b, &result)); + try expect(result == 43); + b = 55; + try expect(!@addWithOverflow(u8, a, b, &result)); + try expect(result == 255); + } + + { + var a: usize = 6; + var b: usize = 6; + var res: usize = undefined; + try expect(!@addWithOverflow(usize, a, b, &res)); + try expect(res == 12); + } + + { + var a: isize = -6; + var b: isize = -6; + var res: isize = undefined; + try expect(!@addWithOverflow(isize, a, b, &res)); + try expect(res == -12); + } } test "small int addition" { if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO var x: u2 = 0; @@ -886,19 +903,37 @@ test "@mulWithOverflow bitsize > 32" { test "@subWithOverflow" { if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO - var result: u8 = undefined; - try expect(@subWithOverflow(u8, 1, 2, &result)); - try expect(result == 255); - try expect(!@subWithOverflow(u8, 1, 1, &result)); - try expect(result == 0); + { + var result: u8 = undefined; + try expect(@subWithOverflow(u8, 1, 2, &result)); + try expect(result == 255); + try expect(!@subWithOverflow(u8, 1, 1, &result)); + try expect(result == 0); - var a: u8 = 1; - var b: u8 = 2; - try expect(@subWithOverflow(u8, a, b, &result)); - try expect(result == 255); - b = 1; - try expect(!@subWithOverflow(u8, a, b, &result)); - try expect(result == 0); + var a: u8 = 1; + var b: u8 = 2; + try expect(@subWithOverflow(u8, a, b, &result)); + try expect(result == 255); + b = 1; + try expect(!@subWithOverflow(u8, a, b, &result)); + try expect(result == 0); + } + + { + var a: usize = 6; + var b: usize = 6; + var res: usize = undefined; + try expect(!@subWithOverflow(usize, a, b, &res)); + try expect(res == 0); + } + + { + var a: isize = -6; + var b: isize = -6; + var res: isize = undefined; + try expect(!@subWithOverflow(isize, a, b, &res)); + try expect(res == 0); + } } test "@shlWithOverflow" { |
