diff --git a/lib/test_runner.zig b/lib/test_runner.zig index 9462c37e1603718ec0a7a71fb40607a1af9c1789..20d7b02e26e159c4f592c46bff8d760e79eb9aa3 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 94849cce002955b2f49f907fadb30db3fbdb5caa..21899b912bcc27429a3262f8c460ecd8752f4d84 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 d72a3e6689ac268c0fbe306680e8d078114e5258..7755cdaa7d209e2d264d6b0ab27e16e8392c7977 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 d9c3dfb0607d5f7db3ecb8030ba420a11c888acc..06b1fdda649f7353c1e9132db1718b298ee24780 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 ace1e93b3fcfbefb933bd3f8f1c562ece30be5b3..7b717369a688d023d0a6fb8392a7e1c3ac556715 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 29cf89ff3e48503197d67532401da8e940fb8b01..95158f5ee32572ea3786000699fee6b54ec6b1c4 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 edd393fea5bffa34c65eb017110aaba4d819c860..41c5906ee66fb1e24ad07a124a9d36cb8f6dad11 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 0b3cf0771aba7d3e06ccb56fbebe5e6ffb4f30fd..3566bdacb0a85a35d1650a60b91589c17e781771 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 0dba59f92ff24babb4ed09d799fdc645a3b38c2a..4ff5e203781c9cbd98b8bb7284998c532d6f1c73 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 fddf7ee2e502ecbb190ccae08e5f84cf8c618696..846f72e301461218d56ea7a03173aa784144b5bb 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 ca7d295dc1ac32218f3176ac845edbc891df6835..ac4b62b0b8dd99b2d2e223c4e971ee4a77e6dde9 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 626a1a7eb6b4d975daeee2e2bf4c4fbd253a1d5d..016b59b61382e44eda564cd9feced5ace4c45d42 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 9dce5820cd3e7f5d801f3baa8d53ed4ae19659be..10258f0c5139b2fb0fbfdd01bbfc6bf8f0bc7191 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 e8a9f4c8311c25c9eeb1690982d7e08eab6008e7..37b1f0cb4923f12ccc111a0a83c80e52cea78edc 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 df115409dfad1396eed13e3520a09041291f4ffc..d549588dee4aa90b67a1a7f452688009d002e433 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".*;