authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-05-18 17:58:05+02:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-05-19 19:39:34+02:00
log080d138b9d06402a8fbb70b4addc90751c6b798e
treed31c349fd5c7b3a4d8118ebdb5c742610076c35f
parent6d32498c5522b3385d8adeb55f94f8f56ac108b3

x64: re-enable incremental tests


3 files changed, 31 insertions(+), 31 deletions(-)

src/arch/x86_64/bits.zig+9-9
......@@ -696,8 +696,8 @@ test "Encoder helpers - general purpose registers" {
696696 });
697697 encoder.opcode_2byte(0x0f, 0xaf);
698698 encoder.modRm_direct(
699 Register.eax.lowId(),
700 Register.edi.lowId(),
699 Register.eax.lowEnc(),
700 Register.edi.lowEnc(),
701701 );
702702
703703 try testing.expectEqualSlices(u8, &[_]u8{ 0x0f, 0xaf, 0xc7 }, code.items);
......@@ -716,8 +716,8 @@ test "Encoder helpers - general purpose registers" {
716716 });
717717 encoder.opcode_1byte(0x89);
718718 encoder.modRm_direct(
719 Register.edi.lowId(),
720 Register.eax.lowId(),
719 Register.edi.lowEnc(),
720 Register.eax.lowEnc(),
721721 );
722722
723723 try testing.expectEqualSlices(u8, &[_]u8{ 0x89, 0xf8 }, code.items);
......@@ -743,7 +743,7 @@ test "Encoder helpers - general purpose registers" {
743743 encoder.opcode_1byte(0x81);
744744 encoder.modRm_direct(
745745 0,
746 Register.rcx.lowId(),
746 Register.rcx.lowEnc(),
747747 );
748748 encoder.imm32(2147483647);
749749
......@@ -768,7 +768,7 @@ test "Encoder helpers - Vex prefix" {
768768 {
769769 stream.reset();
770770 var vex_prefix = Encoder.Vex{};
771 vex_prefix.reg(Register.xmm15.id());
771 vex_prefix.reg(Register.xmm15.enc());
772772 const nwritten = vex_prefix.write(writer);
773773 try testing.expectEqualSlices(u8, &[_]u8{ 0xc5, 0x80 }, buf[0..nwritten]);
774774 }
......@@ -808,7 +808,7 @@ test "Encoder helpers - Vex prefix" {
808808 vex.simd_prefix_66();
809809 encoder.vex(vex); // use 64 bit operation
810810 encoder.opcode_1byte(0x28);
811 encoder.modRm_direct(0, Register.xmm1.lowId());
811 encoder.modRm_direct(0, Register.xmm1.lowEnc());
812812 try testing.expectEqualSlices(u8, &[_]u8{ 0xC5, 0xF9, 0x28, 0xC1 }, code.items);
813813 }
814814
......@@ -822,10 +822,10 @@ test "Encoder helpers - Vex prefix" {
822822 vex.simd_prefix_66();
823823 vex.lead_opc_0f();
824824 vex.rex(.{ .r = true });
825 vex.reg(Register.xmm1.id());
825 vex.reg(Register.xmm1.enc());
826826 encoder.vex(vex);
827827 encoder.opcode_1byte(0x16);
828 encoder.modRm_RIPDisp32(Register.xmm13.lowId());
828 encoder.modRm_RIPDisp32(Register.xmm13.lowEnc());
829829 encoder.disp32(0);
830830 try testing.expectEqualSlices(u8, &[_]u8{ 0xC5, 0x71, 0x16, 0x2D, 0x00, 0x00, 0x00, 0x00 }, code.items);
831831 }
src/register_manager.zig+13-13
......@@ -430,9 +430,9 @@ test "tryAllocReg: no spilling" {
430430
431431 const mock_instruction: Air.Inst.Index = 1;
432432
433 try expectEqual(@as(?MockRegister1, .r2), function.register_manager.tryAllocReg(mock_instruction));
434 try expectEqual(@as(?MockRegister1, .r3), function.register_manager.tryAllocReg(mock_instruction));
435 try expectEqual(@as(?MockRegister1, null), function.register_manager.tryAllocReg(mock_instruction));
433 try expectEqual(@as(?MockRegister1, .r2), function.register_manager.tryAllocReg(mock_instruction, .{}));
434 try expectEqual(@as(?MockRegister1, .r3), function.register_manager.tryAllocReg(mock_instruction, .{}));
435 try expectEqual(@as(?MockRegister1, null), function.register_manager.tryAllocReg(mock_instruction, .{}));
436436
437437 try expect(function.register_manager.isRegAllocated(.r2));
438438 try expect(function.register_manager.isRegAllocated(.r3));
......@@ -458,16 +458,16 @@ test "allocReg: spilling" {
458458
459459 const mock_instruction: Air.Inst.Index = 1;
460460
461 try expectEqual(@as(?MockRegister1, .r2), try function.register_manager.allocReg(mock_instruction));
462 try expectEqual(@as(?MockRegister1, .r3), try function.register_manager.allocReg(mock_instruction));
461 try expectEqual(@as(?MockRegister1, .r2), try function.register_manager.allocReg(mock_instruction, .{}));
462 try expectEqual(@as(?MockRegister1, .r3), try function.register_manager.allocReg(mock_instruction, .{}));
463463
464464 // Spill a register
465 try expectEqual(@as(?MockRegister1, .r2), try function.register_manager.allocReg(mock_instruction));
465 try expectEqual(@as(?MockRegister1, .r2), try function.register_manager.allocReg(mock_instruction, .{}));
466466 try expectEqualSlices(MockRegister1, &[_]MockRegister1{.r2}, function.spilled.items);
467467
468468 // No spilling necessary
469469 function.register_manager.freeReg(.r3);
470 try expectEqual(@as(?MockRegister1, .r3), try function.register_manager.allocReg(mock_instruction));
470 try expectEqual(@as(?MockRegister1, .r3), try function.register_manager.allocReg(mock_instruction, .{}));
471471 try expectEqualSlices(MockRegister1, &[_]MockRegister1{.r2}, function.spilled.items);
472472
473473 // Locked registers
......@@ -476,7 +476,7 @@ test "allocReg: spilling" {
476476 const lock = function.register_manager.lockReg(.r2);
477477 defer if (lock) |reg| function.register_manager.unlockReg(reg);
478478
479 try expectEqual(@as(?MockRegister1, .r3), try function.register_manager.allocReg(mock_instruction));
479 try expectEqual(@as(?MockRegister1, .r3), try function.register_manager.allocReg(mock_instruction, .{}));
480480 }
481481 try expect(!function.register_manager.lockedRegsExist());
482482}
......@@ -489,7 +489,7 @@ test "tryAllocRegs" {
489489 };
490490 defer function.deinit();
491491
492 try expectEqual([_]MockRegister2{ .r0, .r1, .r2 }, function.register_manager.tryAllocRegs(3, .{ null, null, null }).?);
492 try expectEqual([_]MockRegister2{ .r0, .r1, .r2 }, function.register_manager.tryAllocRegs(3, .{ null, null, null }, .{}).?);
493493
494494 try expect(function.register_manager.isRegAllocated(.r0));
495495 try expect(function.register_manager.isRegAllocated(.r1));
......@@ -504,7 +504,7 @@ test "tryAllocRegs" {
504504 const lock = function.register_manager.lockReg(.r1);
505505 defer if (lock) |reg| function.register_manager.unlockReg(reg);
506506
507 try expectEqual([_]MockRegister2{ .r0, .r2, .r3 }, function.register_manager.tryAllocRegs(3, .{ null, null, null }).?);
507 try expectEqual([_]MockRegister2{ .r0, .r2, .r3 }, function.register_manager.tryAllocRegs(3, .{ null, null, null }, .{}).?);
508508 }
509509 try expect(!function.register_manager.lockedRegsExist());
510510
......@@ -543,7 +543,7 @@ test "allocRegs: normal usage" {
543543 const lock = function.register_manager.lockReg(result_reg);
544544 defer if (lock) |reg| function.register_manager.unlockReg(reg);
545545
546 const regs = try function.register_manager.allocRegs(2, .{ null, null });
546 const regs = try function.register_manager.allocRegs(2, .{ null, null }, .{});
547547 try function.genAdd(result_reg, regs[0], regs[1]);
548548 }
549549}
......@@ -565,12 +565,12 @@ test "allocRegs: selectively reducing register pressure" {
565565
566566 // Here, we don't defer unlock because we manually unlock
567567 // after genAdd
568 const regs = try function.register_manager.allocRegs(2, .{ null, null });
568 const regs = try function.register_manager.allocRegs(2, .{ null, null }, .{});
569569
570570 try function.genAdd(result_reg, regs[0], regs[1]);
571571 function.register_manager.unlockReg(lock.?);
572572
573 const extra_summand_reg = try function.register_manager.allocReg(null);
573 const extra_summand_reg = try function.register_manager.allocReg(null, .{});
574574 try function.genAdd(result_reg, result_reg, extra_summand_reg);
575575 }
576576}
src/test.zig+9-9
......@@ -34,18 +34,18 @@ test {
3434 var ctx = TestContext.init(std.testing.allocator, arena);
3535 defer ctx.deinit();
3636
37 // {
38 // const dir_path = try std.fs.path.join(arena, &.{
39 // std.fs.path.dirname(@src().file).?, "..", "test", "cases",
40 // });
37 {
38 const dir_path = try std.fs.path.join(arena, &.{
39 std.fs.path.dirname(@src().file).?, "..", "test", "cases",
40 });
4141
42 // var dir = try std.fs.cwd().openDir(dir_path, .{ .iterate = true });
43 // defer dir.close();
42 var dir = try std.fs.cwd().openDir(dir_path, .{ .iterate = true });
43 defer dir.close();
4444
45 // ctx.addTestCasesFromDir(dir);
46 // }
45 ctx.addTestCasesFromDir(dir);
46 }
4747
48 // try @import("test_cases").addCases(&ctx);
48 try @import("test_cases").addCases(&ctx);
4949
5050 try ctx.run();
5151}