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" {...@@ -696,8 +696,8 @@ test "Encoder helpers - general purpose registers" {
696 });696 });
697 encoder.opcode_2byte(0x0f, 0xaf);697 encoder.opcode_2byte(0x0f, 0xaf);
698 encoder.modRm_direct(698 encoder.modRm_direct(
699 Register.eax.lowId(),699 Register.eax.lowEnc(),
700 Register.edi.lowId(),700 Register.edi.lowEnc(),
701 );701 );
702702
703 try testing.expectEqualSlices(u8, &[_]u8{ 0x0f, 0xaf, 0xc7 }, code.items);703 try testing.expectEqualSlices(u8, &[_]u8{ 0x0f, 0xaf, 0xc7 }, code.items);
...@@ -716,8 +716,8 @@ test "Encoder helpers - general purpose registers" {...@@ -716,8 +716,8 @@ test "Encoder helpers - general purpose registers" {
716 });716 });
717 encoder.opcode_1byte(0x89);717 encoder.opcode_1byte(0x89);
718 encoder.modRm_direct(718 encoder.modRm_direct(
719 Register.edi.lowId(),719 Register.edi.lowEnc(),
720 Register.eax.lowId(),720 Register.eax.lowEnc(),
721 );721 );
722722
723 try testing.expectEqualSlices(u8, &[_]u8{ 0x89, 0xf8 }, code.items);723 try testing.expectEqualSlices(u8, &[_]u8{ 0x89, 0xf8 }, code.items);
...@@ -743,7 +743,7 @@ test "Encoder helpers - general purpose registers" {...@@ -743,7 +743,7 @@ test "Encoder helpers - general purpose registers" {
743 encoder.opcode_1byte(0x81);743 encoder.opcode_1byte(0x81);
744 encoder.modRm_direct(744 encoder.modRm_direct(
745 0,745 0,
746 Register.rcx.lowId(),746 Register.rcx.lowEnc(),
747 );747 );
748 encoder.imm32(2147483647);748 encoder.imm32(2147483647);
749749
...@@ -768,7 +768,7 @@ test "Encoder helpers - Vex prefix" {...@@ -768,7 +768,7 @@ test "Encoder helpers - Vex prefix" {
768 {768 {
769 stream.reset();769 stream.reset();
770 var vex_prefix = Encoder.Vex{};770 var vex_prefix = Encoder.Vex{};
771 vex_prefix.reg(Register.xmm15.id());771 vex_prefix.reg(Register.xmm15.enc());
772 const nwritten = vex_prefix.write(writer);772 const nwritten = vex_prefix.write(writer);
773 try testing.expectEqualSlices(u8, &[_]u8{ 0xc5, 0x80 }, buf[0..nwritten]);773 try testing.expectEqualSlices(u8, &[_]u8{ 0xc5, 0x80 }, buf[0..nwritten]);
774 }774 }
...@@ -808,7 +808,7 @@ test "Encoder helpers - Vex prefix" {...@@ -808,7 +808,7 @@ test "Encoder helpers - Vex prefix" {
808 vex.simd_prefix_66();808 vex.simd_prefix_66();
809 encoder.vex(vex); // use 64 bit operation809 encoder.vex(vex); // use 64 bit operation
810 encoder.opcode_1byte(0x28);810 encoder.opcode_1byte(0x28);
811 encoder.modRm_direct(0, Register.xmm1.lowId());811 encoder.modRm_direct(0, Register.xmm1.lowEnc());
812 try testing.expectEqualSlices(u8, &[_]u8{ 0xC5, 0xF9, 0x28, 0xC1 }, code.items);812 try testing.expectEqualSlices(u8, &[_]u8{ 0xC5, 0xF9, 0x28, 0xC1 }, code.items);
813 }813 }
814814
...@@ -822,10 +822,10 @@ test "Encoder helpers - Vex prefix" {...@@ -822,10 +822,10 @@ test "Encoder helpers - Vex prefix" {
822 vex.simd_prefix_66();822 vex.simd_prefix_66();
823 vex.lead_opc_0f();823 vex.lead_opc_0f();
824 vex.rex(.{ .r = true });824 vex.rex(.{ .r = true });
825 vex.reg(Register.xmm1.id());825 vex.reg(Register.xmm1.enc());
826 encoder.vex(vex);826 encoder.vex(vex);
827 encoder.opcode_1byte(0x16);827 encoder.opcode_1byte(0x16);
828 encoder.modRm_RIPDisp32(Register.xmm13.lowId());828 encoder.modRm_RIPDisp32(Register.xmm13.lowEnc());
829 encoder.disp32(0);829 encoder.disp32(0);
830 try testing.expectEqualSlices(u8, &[_]u8{ 0xC5, 0x71, 0x16, 0x2D, 0x00, 0x00, 0x00, 0x00 }, code.items);830 try testing.expectEqualSlices(u8, &[_]u8{ 0xC5, 0x71, 0x16, 0x2D, 0x00, 0x00, 0x00, 0x00 }, code.items);
831 }831 }
src/register_manager.zig+13-13
...@@ -430,9 +430,9 @@ test "tryAllocReg: no spilling" {...@@ -430,9 +430,9 @@ test "tryAllocReg: no spilling" {
430430
431 const mock_instruction: Air.Inst.Index = 1;431 const mock_instruction: Air.Inst.Index = 1;
432432
433 try expectEqual(@as(?MockRegister1, .r2), 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));434 try expectEqual(@as(?MockRegister1, .r3), function.register_manager.tryAllocReg(mock_instruction, .{}));
435 try expectEqual(@as(?MockRegister1, null), function.register_manager.tryAllocReg(mock_instruction));435 try expectEqual(@as(?MockRegister1, null), function.register_manager.tryAllocReg(mock_instruction, .{}));
436436
437 try expect(function.register_manager.isRegAllocated(.r2));437 try expect(function.register_manager.isRegAllocated(.r2));
438 try expect(function.register_manager.isRegAllocated(.r3));438 try expect(function.register_manager.isRegAllocated(.r3));
...@@ -458,16 +458,16 @@ test "allocReg: spilling" {...@@ -458,16 +458,16 @@ test "allocReg: spilling" {
458458
459 const mock_instruction: Air.Inst.Index = 1;459 const mock_instruction: Air.Inst.Index = 1;
460460
461 try expectEqual(@as(?MockRegister1, .r2), 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));462 try expectEqual(@as(?MockRegister1, .r3), try function.register_manager.allocReg(mock_instruction, .{}));
463463
464 // Spill a register464 // 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, .{}));
466 try expectEqualSlices(MockRegister1, &[_]MockRegister1{.r2}, function.spilled.items);466 try expectEqualSlices(MockRegister1, &[_]MockRegister1{.r2}, function.spilled.items);
467467
468 // No spilling necessary468 // No spilling necessary
469 function.register_manager.freeReg(.r3);469 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, .{}));
471 try expectEqualSlices(MockRegister1, &[_]MockRegister1{.r2}, function.spilled.items);471 try expectEqualSlices(MockRegister1, &[_]MockRegister1{.r2}, function.spilled.items);
472472
473 // Locked registers473 // Locked registers
...@@ -476,7 +476,7 @@ test "allocReg: spilling" {...@@ -476,7 +476,7 @@ test "allocReg: spilling" {
476 const lock = function.register_manager.lockReg(.r2);476 const lock = function.register_manager.lockReg(.r2);
477 defer if (lock) |reg| function.register_manager.unlockReg(reg);477 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, .{}));
480 }480 }
481 try expect(!function.register_manager.lockedRegsExist());481 try expect(!function.register_manager.lockedRegsExist());
482}482}
...@@ -489,7 +489,7 @@ test "tryAllocRegs" {...@@ -489,7 +489,7 @@ test "tryAllocRegs" {
489 };489 };
490 defer function.deinit();490 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
494 try expect(function.register_manager.isRegAllocated(.r0));494 try expect(function.register_manager.isRegAllocated(.r0));
495 try expect(function.register_manager.isRegAllocated(.r1));495 try expect(function.register_manager.isRegAllocated(.r1));
...@@ -504,7 +504,7 @@ test "tryAllocRegs" {...@@ -504,7 +504,7 @@ test "tryAllocRegs" {
504 const lock = function.register_manager.lockReg(.r1);504 const lock = function.register_manager.lockReg(.r1);
505 defer if (lock) |reg| function.register_manager.unlockReg(reg);505 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 }, .{}).?);
508 }508 }
509 try expect(!function.register_manager.lockedRegsExist());509 try expect(!function.register_manager.lockedRegsExist());
510510
...@@ -543,7 +543,7 @@ test "allocRegs: normal usage" {...@@ -543,7 +543,7 @@ test "allocRegs: normal usage" {
543 const lock = function.register_manager.lockReg(result_reg);543 const lock = function.register_manager.lockReg(result_reg);
544 defer if (lock) |reg| function.register_manager.unlockReg(reg);544 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 }, .{});
547 try function.genAdd(result_reg, regs[0], regs[1]);547 try function.genAdd(result_reg, regs[0], regs[1]);
548 }548 }
549}549}
...@@ -565,12 +565,12 @@ test "allocRegs: selectively reducing register pressure" {...@@ -565,12 +565,12 @@ test "allocRegs: selectively reducing register pressure" {
565565
566 // Here, we don't defer unlock because we manually unlock566 // Here, we don't defer unlock because we manually unlock
567 // after genAdd567 // 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
570 try function.genAdd(result_reg, regs[0], regs[1]);570 try function.genAdd(result_reg, regs[0], regs[1]);
571 function.register_manager.unlockReg(lock.?);571 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, .{});
574 try function.genAdd(result_reg, result_reg, extra_summand_reg);574 try function.genAdd(result_reg, result_reg, extra_summand_reg);
575 }575 }
576}576}
src/test.zig+9-9
...@@ -34,18 +34,18 @@ test {...@@ -34,18 +34,18 @@ test {
34 var ctx = TestContext.init(std.testing.allocator, arena);34 var ctx = TestContext.init(std.testing.allocator, arena);
35 defer ctx.deinit();35 defer ctx.deinit();
3636
37 // {37 {
38 // const dir_path = try std.fs.path.join(arena, &.{38 const dir_path = try std.fs.path.join(arena, &.{
39 // std.fs.path.dirname(@src().file).?, "..", "test", "cases",39 std.fs.path.dirname(@src().file).?, "..", "test", "cases",
40 // });40 });
4141
42 // var dir = try std.fs.cwd().openDir(dir_path, .{ .iterate = true });42 var dir = try std.fs.cwd().openDir(dir_path, .{ .iterate = true });
43 // defer dir.close();43 defer dir.close();
4444
45 // ctx.addTestCasesFromDir(dir);45 ctx.addTestCasesFromDir(dir);
46 // }46 }
4747
48 // try @import("test_cases").addCases(&ctx);48 try @import("test_cases").addCases(&ctx);
4949
50 try ctx.run();50 try ctx.run();
51}51}