aboutsummaryrefslogtreecommitdiff
path: root/test/behavior/math.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2022-05-14 21:24:48 +0200
committerAndrew Kelley <andrew@ziglang.org>2022-05-16 13:55:26 -0700
commit852c82084163eec9911384b325dbd5713ee4df90 (patch)
tree677c9aa46b7e821aaeb7e4aa32bfb76b1e04295c /test/behavior/math.zig
parenta84be7e988c91606bc42e1e1c8a34bbdcdb8a3f1 (diff)
downloadzig-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.zig87
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" {