aboutsummaryrefslogtreecommitdiff
path: root/test/behavior/vector.zig
diff options
context:
space:
mode:
authorCody Tapscott <topolarity@tapscott.me>2022-10-05 05:34:45 -0700
committerCody Tapscott <topolarity@tapscott.me>2022-11-10 12:22:40 -0700
commitfbda15632dfb4ddfd931b5acc0c36a3122b7e464 (patch)
tree4dbf5629d9dcfc77a57f31d72bbf067927d9142e /test/behavior/vector.zig
parenta2f4de1663f815ae8c202ba6a8c68b0658b7d23f (diff)
downloadzig-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.zig71
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];
+ }
+}