diff options
| author | Cody Tapscott <topolarity@tapscott.me> | 2022-10-05 05:34:45 -0700 |
|---|---|---|
| committer | Cody Tapscott <topolarity@tapscott.me> | 2022-11-10 12:22:40 -0700 |
| commit | fbda15632dfb4ddfd931b5acc0c36a3122b7e464 (patch) | |
| tree | 4dbf5629d9dcfc77a57f31d72bbf067927d9142e /test/behavior/vector.zig | |
| parent | a2f4de1663f815ae8c202ba6a8c68b0658b7d23f (diff) | |
| download | zig-fbda15632dfb4ddfd931b5acc0c36a3122b7e464.tar.gz zig-fbda15632dfb4ddfd931b5acc0c36a3122b7e464.zip | |
stage2 sema: Make vector constants when operating on vectors
Resolves https://github.com/ziglang/zig/issues/13058
Diffstat (limited to 'test/behavior/vector.zig')
| -rw-r--r-- | test/behavior/vector.zig | 71 |
1 files changed, 66 insertions, 5 deletions
diff --git a/test/behavior/vector.zig b/test/behavior/vector.zig index 20e2202b10..1f4faae636 100644 --- a/test/behavior/vector.zig +++ b/test/behavior/vector.zig @@ -1136,11 +1136,6 @@ test "array of vectors is copied" { } test "byte vector initialized in inline function" { - if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO - const S = struct { inline fn boolx4(e0: bool, e1: bool, e2: bool, e3: bool) @Vector(4, bool) { return .{ e0, e1, e2, e3 }; @@ -1170,3 +1165,69 @@ test "byte vector initialized in inline function" { try expect(S.all(S.boolx4(true, true, true, true))); } + +test "zero divisor" { + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO + + const zeros = @Vector(2, f32){ 0.0, 0.0 }; + const ones = @Vector(2, f32){ 1.0, 1.0 }; + + const v1 = zeros / ones; + const v2 = @divExact(zeros, ones); + const v3 = @divTrunc(zeros, ones); + const v4 = @divFloor(zeros, ones); + + _ = v1[0]; + _ = v2[0]; + _ = v3[0]; + _ = v4[0]; +} + +test "zero multiplicand" { + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO + + const zeros = @Vector(2, u32){ 0.0, 0.0 }; + var ones = @Vector(2, u32){ 1.0, 1.0 }; + + _ = (ones * zeros)[0]; + _ = (zeros * zeros)[0]; + _ = (zeros * ones)[0]; + + _ = (ones *| zeros)[0]; + _ = (zeros *| zeros)[0]; + _ = (zeros *| ones)[0]; + + _ = (ones *% zeros)[0]; + _ = (zeros *% zeros)[0]; + _ = (zeros *% ones)[0]; +} + +test "@intCast to u0" { + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86_64) 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 zeros = @Vector(2, u32){ 0, 0 }; + const casted = @intCast(@Vector(2, u0), zeros); + + _ = casted[0]; +} + +test "modRem with zero divisor" { + comptime { + var zeros = @Vector(2, u32){ 0, 0 }; + const ones = @Vector(2, u32){ 1, 1 }; + + zeros %= ones; + _ = zeros[0]; + } +} |
