From 894406b9d3fec68d5390cb6b52a656aae534eeb1 Mon Sep 17 00:00:00 2001 From: Jacob Young Date: Mon, 24 Apr 2023 02:26:37 -0400 Subject: [PATCH] behavior: update passing cbe tests --- lib/test_runner.zig | 24 ++++++++++++++++++++---- src/arch/x86_64/Encoding.zig | 2 +- test/behavior/align.zig | 5 ++++- test/behavior/basic.zig | 1 - test/behavior/bugs/12571.zig | 1 - test/behavior/bugs/12776.zig | 5 ++++- test/behavior/bugs/13069.zig | 1 - test/behavior/eval.zig | 1 - test/behavior/fn.zig | 2 -- test/behavior/math.zig | 2 -- test/behavior/packed-struct.zig | 2 -- test/behavior/pointers.zig | 1 - test/behavior/popcount.zig | 1 - test/behavior/union.zig | 1 - test/behavior/vector.zig | 8 ++++---- 15 files changed, 33 insertions(+), 24 deletions(-) diff --git a/lib/test_runner.zig b/lib/test_runner.zig index 9462c37e16..20d7b02e26 100644 --- a/lib/test_runner.zig +++ b/lib/test_runner.zig @@ -233,14 +233,30 @@ pub fn log( /// Simpler main(), exercising fewer language features, so that /// work-in-progress backends can handle it. pub fn mainSimple() anyerror!void { - //const stderr = std.io.getStdErr(); + const enable_print = false; + + var passed: u64 = 0; + var skipped: u64 = 0; + var failed: u64 = 0; + const stderr = if (enable_print) std.io.getStdErr() else {}; for (builtin.test_functions) |test_fn| { test_fn.func() catch |err| { + if (enable_print) stderr.writeAll(test_fn.name) catch {}; if (err != error.SkipZigTest) { - //stderr.writeAll(test_fn.name) catch {}; - //stderr.writeAll("\n") catch {}; - return err; + if (enable_print) stderr.writeAll("... FAIL\n") catch {}; + failed += 1; + if (!enable_print) return err; + continue; } + if (enable_print) stderr.writeAll("... SKIP\n") catch {}; + skipped += 1; + continue; }; + //if (enable_print) stderr.writeAll("... PASS\n") catch {}; + passed += 1; + } + if (enable_print) { + stderr.writer().print("{} passed, {} skipped, {} failed\n", .{ passed, skipped, failed }) catch {}; + if (failed != 0) std.process.exit(1); } } diff --git a/src/arch/x86_64/Encoding.zig b/src/arch/x86_64/Encoding.zig index 94849cce00..21899b912b 100644 --- a/src/arch/x86_64/Encoding.zig +++ b/src/arch/x86_64/Encoding.zig @@ -89,7 +89,7 @@ pub fn findByOpcode(opc: []const u8, prefixes: struct { if (!std.mem.eql(u8, opc, enc.opcode())) continue; if (prefixes.rex.w) { switch (data.mode) { - .short, .fpu, .sse, .sse2, .sse2_long, .sse4_1, .none => continue, + .short, .fpu, .sse, .sse2, .sse4_1, .none => continue, .long, .sse2_long, .rex => {}, } } else if (prefixes.rex.present and !prefixes.rex.isSet()) { diff --git a/test/behavior/align.zig b/test/behavior/align.zig index d72a3e6689..7755cdaa7d 100644 --- a/test/behavior/align.zig +++ b/test/behavior/align.zig @@ -491,7 +491,10 @@ test "read 128-bit field from default aligned struct in global memory" { } test "struct field explicit alignment" { - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64) { + // Careful enabling this test, fails randomly. + return error.SkipZigTest; + } if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO diff --git a/test/behavior/basic.zig b/test/behavior/basic.zig index d9c3dfb060..06b1fdda64 100644 --- a/test/behavior/basic.zig +++ b/test/behavior/basic.zig @@ -785,7 +785,6 @@ fn manyptrConcat(comptime s: [*:0]const u8) [*:0]const u8 { test "comptime manyptr concatenation" { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO const s = "epic"; diff --git a/test/behavior/bugs/12571.zig b/test/behavior/bugs/12571.zig index ace1e93b3f..7b717369a6 100644 --- a/test/behavior/bugs/12571.zig +++ b/test/behavior/bugs/12571.zig @@ -12,7 +12,6 @@ const Entry = packed struct { }; test { - 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 diff --git a/test/behavior/bugs/12776.zig b/test/behavior/bugs/12776.zig index 29cf89ff3e..95158f5ee3 100644 --- a/test/behavior/bugs/12776.zig +++ b/test/behavior/bugs/12776.zig @@ -32,7 +32,10 @@ test { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64) { + // Careful enabling this test, fails randomly. + return error.SkipZigTest; + } var ram = try RAM.new(); var cpu = try CPU.new(&ram); diff --git a/test/behavior/bugs/13069.zig b/test/behavior/bugs/13069.zig index edd393fea5..41c5906ee6 100644 --- a/test/behavior/bugs/13069.zig +++ b/test/behavior/bugs/13069.zig @@ -4,7 +4,6 @@ const expect = std.testing.expect; test { if (builtin.zig_backend == .stage2_arm) 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_sparc64) return error.SkipZigTest; // TODO diff --git a/test/behavior/eval.zig b/test/behavior/eval.zig index 0b3cf0771a..3566bdacb0 100644 --- a/test/behavior/eval.zig +++ b/test/behavior/eval.zig @@ -532,7 +532,6 @@ test "@tagName of @typeInfo" { } test "static eval list init" { - 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 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO diff --git a/test/behavior/fn.zig b/test/behavior/fn.zig index 0dba59f92f..4ff5e20378 100644 --- a/test/behavior/fn.zig +++ b/test/behavior/fn.zig @@ -335,7 +335,6 @@ fn numberLiteralArg(a: anytype) !void { } test "function call with anon list literal" { - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO @@ -356,7 +355,6 @@ test "function call with anon list literal" { } test "function call with anon list literal - 2D" { - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO diff --git a/test/behavior/math.zig b/test/behavior/math.zig index fddf7ee2e5..846f72e301 100644 --- a/test/behavior/math.zig +++ b/test/behavior/math.zig @@ -734,7 +734,6 @@ test "small int addition" { test "basic @mulWithOverflow" { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO { var a: u8 = 86; @@ -1126,7 +1125,6 @@ test "allow signed integer division/remainder when values are comptime-known and test "quad hex float literal parsing accurate" { 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 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO diff --git a/test/behavior/packed-struct.zig b/test/behavior/packed-struct.zig index ca7d295dc1..ac4b62b0b8 100644 --- a/test/behavior/packed-struct.zig +++ b/test/behavior/packed-struct.zig @@ -232,7 +232,6 @@ test "nested packed structs" { } test "regular in irregular packed struct" { - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO @@ -621,7 +620,6 @@ test "store undefined to packed result location" { if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; var x: u4 = 0; var s = packed struct { x: u4, y: u4 }{ .x = x, .y = if (x > 0) x else undefined }; diff --git a/test/behavior/pointers.zig b/test/behavior/pointers.zig index 626a1a7eb6..016b59b613 100644 --- a/test/behavior/pointers.zig +++ b/test/behavior/pointers.zig @@ -343,7 +343,6 @@ test "pointer sentinel with optional element" { test "pointer sentinel with +inf" { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO diff --git a/test/behavior/popcount.zig b/test/behavior/popcount.zig index 9dce5820cd..10258f0c51 100644 --- a/test/behavior/popcount.zig +++ b/test/behavior/popcount.zig @@ -4,7 +4,6 @@ const expect = std.testing.expect; const expectEqual = std.testing.expectEqual; test "@popCount integers" { - 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 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO diff --git a/test/behavior/union.zig b/test/behavior/union.zig index e8a9f4c831..37b1f0cb49 100644 --- a/test/behavior/union.zig +++ b/test/behavior/union.zig @@ -26,7 +26,6 @@ fn setFloat(foo: *FooWithFloats, x: f64) void { } test "init union with runtime value - floats" { - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO diff --git a/test/behavior/vector.zig b/test/behavior/vector.zig index df115409df..d549588dee 100644 --- a/test/behavior/vector.zig +++ b/test/behavior/vector.zig @@ -318,7 +318,6 @@ test "vector @splat" { } test "load vector elements via comptime index" { - 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 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO @@ -340,7 +339,6 @@ test "load vector elements via comptime index" { } test "store vector elements via comptime index" { - 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 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO @@ -368,7 +366,6 @@ test "store vector elements via comptime index" { } test "load vector elements via runtime index" { - 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 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO @@ -390,7 +387,6 @@ test "load vector elements via runtime index" { } test "store vector elements via runtime index" { - 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 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO @@ -1100,6 +1096,7 @@ test "loading the second vector from a slice of vectors" { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO @setRuntimeSafety(false); var small_bases = [2]@Vector(2, u8){ @@ -1200,6 +1197,7 @@ test "zero multiplicand" { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO const zeros = @Vector(2, u32){ 0.0, 0.0 }; var ones = @Vector(2, u32){ 1.0, 1.0 }; @@ -1259,6 +1257,7 @@ test "load packed vector element" { if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO var x: @Vector(2, u15) = .{ 1, 4 }; try expect((&x[0]).* == 1); @@ -1297,6 +1296,7 @@ test "store to vector in slice" { test "addition of vectors represented as strings" { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO const V = @Vector(3, u8); const foo: V = "foo".*;