authorgravatar for william@sengir.comWilliam Sengir <william@sengir.com> 2022-03-28 10:40:55-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-05-16 13:55:26-07:00
logbb3532e775bb17fff1630103d4d29a650b7ad5c3
tree0640803174715ab0b5c3f0b3a505bcc43c47ac06
parent21be3d9166e8ea159ef334243b945bd20ed62652

stage2: add more vector overflow tests


1 files changed, 36 insertions(+), 8 deletions(-)

test/behavior/vector.zig+36-8
...@@ -917,10 +917,30 @@ test "@addWithOverflow" {...@@ -917,10 +917,30 @@ test "@addWithOverflow" {
917917
918 const S = struct {918 const S = struct {
919 fn doTheTest() !void {919 fn doTheTest() !void {
920 var result: @Vector(4, u8) = undefined;920 {
921 var overflow = @addWithOverflow(@Vector(4, u8), @Vector(4, u8){ 250, 250, 250, 250 }, @Vector(4, u8){ 0, 5, 6, 10 }, &result);921 var result: @Vector(4, u8) = undefined;
922 var expected: @Vector(4, bool) = .{ false, false, true, true };922 var overflow = @addWithOverflow(@Vector(4, u8), @Vector(4, u8){ 250, 250, 250, 250 }, @Vector(4, u8){ 0, 5, 6, 10 }, &result);
923 try expect(mem.eql(bool, &@as([4]bool, overflow), &@as([4]bool, expected)));923 var expected: @Vector(4, bool) = .{ false, false, true, true };
924 try expect(mem.eql(bool, &@as([4]bool, overflow), &@as([4]bool, expected)));
925 }
926 {
927 var result: @Vector(4, i8) = undefined;
928 var overflow = @addWithOverflow(@Vector(4, i8), @Vector(4, i8){ -125, -125, 125, 125 }, @Vector(4, i8){ -3, -4, 2, 3 }, &result);
929 var expected: @Vector(4, bool) = .{ false, true, false, true };
930 try expect(mem.eql(bool, &@as([4]bool, overflow), &@as([4]bool, expected)));
931 }
932 {
933 var result: @Vector(4, u1) = undefined;
934 var overflow = @addWithOverflow(@Vector(4, u1), @Vector(4, u1){ 0, 0, 1, 1 }, @Vector(4, u1){ 0, 1, 0, 1 }, &result);
935 var expected: @Vector(4, bool) = .{ false, false, false, true };
936 try expect(mem.eql(bool, &@as([4]bool, overflow), &@as([4]bool, expected)));
937 }
938 {
939 var result: @Vector(4, u0) = undefined;
940 var overflow = @addWithOverflow(@Vector(4, u0), @Vector(4, u0){ 0, 0, 0, 0 }, @Vector(4, u0){ 0, 0, 0, 0 }, &result);
941 var expected: @Vector(4, bool) = .{ false, false, false, false };
942 try expect(mem.eql(bool, &@as([4]bool, overflow), &@as([4]bool, expected)));
943 }
924 }944 }
925 };945 };
926 try S.doTheTest();946 try S.doTheTest();
...@@ -940,10 +960,18 @@ test "@subWithOverflow" {...@@ -940,10 +960,18 @@ test "@subWithOverflow" {
940960
941 const S = struct {961 const S = struct {
942 fn doTheTest() !void {962 fn doTheTest() !void {
943 var result: @Vector(4, i8) = undefined;963 {
944 var overflow = @subWithOverflow(@Vector(4, i8), @Vector(4, i8){ -120, -120, 120, 120 }, @Vector(4, i8){ 8, 9, -7, -8 }, &result);964 var result: @Vector(2, u8) = undefined;
945 var expected: @Vector(4, bool) = .{ false, true, false, true };965 var overflow = @subWithOverflow(@Vector(2, u8), @Vector(2, u8){ 5, 5 }, @Vector(2, u8){ 5, 6 }, &result);
946 try expect(mem.eql(bool, &@as([4]bool, overflow), &@as([4]bool, expected)));966 var expected: @Vector(2, bool) = .{ false, true };
967 try expect(mem.eql(bool, &@as([2]bool, overflow), &@as([2]bool, expected)));
968 }
969 {
970 var result: @Vector(4, i8) = undefined;
971 var overflow = @subWithOverflow(@Vector(4, i8), @Vector(4, i8){ -120, -120, 120, 120 }, @Vector(4, i8){ 8, 9, -7, -8 }, &result);
972 var expected: @Vector(4, bool) = .{ false, true, false, true };
973 try expect(mem.eql(bool, &@as([4]bool, overflow), &@as([4]bool, expected)));
974 }
947 }975 }
948 };976 };
949 try S.doTheTest();977 try S.doTheTest();