authorgravatar for lewis.gaul@gmail.comLewis Gaul <lewis.gaul@gmail.com> 2021-07-18 23:17:00+01:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-07-20 12:19:16-07:00
log7381431e68eba09f76ddc41cff8931d3e4f1a798
treee056c6112f8ab6908a5be331745a5d38f490a727
parent1bc3bfc04b51af8a00999fc4bf766a202dcc7384

Get register_manager.zig tests to compile - use value '1' as mock Air.Inst.Index


1 files changed, 17 insertions(+), 33 deletions(-)

src/register_manager.zig+17-33
......@@ -296,15 +296,11 @@ test "tryAllocReg: no spilling" {
296296 };
297297 defer function.deinit();
298298
299 var mock_instruction = ir.Inst{
300 .tag = .breakpoint,
301 .ty = Type.initTag(.void),
302 .src = .unneeded,
303 };
299 const mock_instruction: Air.Inst.Index = 1;
304300
305 try expectEqual(@as(?MockRegister1, .r2), function.register_manager.tryAllocReg(&mock_instruction, &.{}));
306 try expectEqual(@as(?MockRegister1, .r3), function.register_manager.tryAllocReg(&mock_instruction, &.{}));
307 try expectEqual(@as(?MockRegister1, null), function.register_manager.tryAllocReg(&mock_instruction, &.{}));
301 try expectEqual(@as(?MockRegister1, .r2), function.register_manager.tryAllocReg(mock_instruction, &.{}));
302 try expectEqual(@as(?MockRegister1, .r3), function.register_manager.tryAllocReg(mock_instruction, &.{}));
303 try expectEqual(@as(?MockRegister1, null), function.register_manager.tryAllocReg(mock_instruction, &.{}));
308304
309305 try expect(function.register_manager.isRegAllocated(.r2));
310306 try expect(function.register_manager.isRegAllocated(.r3));
......@@ -328,28 +324,24 @@ test "allocReg: spilling" {
328324 };
329325 defer function.deinit();
330326
331 var mock_instruction = ir.Inst{
332 .tag = .breakpoint,
333 .ty = Type.initTag(.void),
334 .src = .unneeded,
335 };
327 const mock_instruction: Air.Inst.Index = 1;
336328
337 try expectEqual(@as(?MockRegister1, .r2), try function.register_manager.allocReg(&mock_instruction, &.{}));
338 try expectEqual(@as(?MockRegister1, .r3), try function.register_manager.allocReg(&mock_instruction, &.{}));
329 try expectEqual(@as(?MockRegister1, .r2), try function.register_manager.allocReg(mock_instruction, &.{}));
330 try expectEqual(@as(?MockRegister1, .r3), try function.register_manager.allocReg(mock_instruction, &.{}));
339331
340332 // Spill a register
341 try expectEqual(@as(?MockRegister1, .r2), try function.register_manager.allocReg(&mock_instruction, &.{}));
333 try expectEqual(@as(?MockRegister1, .r2), try function.register_manager.allocReg(mock_instruction, &.{}));
342334 try expectEqualSlices(MockRegister1, &[_]MockRegister1{.r2}, function.spilled.items);
343335
344336 // No spilling necessary
345337 function.register_manager.freeReg(.r3);
346 try expectEqual(@as(?MockRegister1, .r3), try function.register_manager.allocReg(&mock_instruction, &.{}));
338 try expectEqual(@as(?MockRegister1, .r3), try function.register_manager.allocReg(mock_instruction, &.{}));
347339 try expectEqualSlices(MockRegister1, &[_]MockRegister1{.r2}, function.spilled.items);
348340
349341 // Exceptions
350342 function.register_manager.freeReg(.r2);
351343 function.register_manager.freeReg(.r3);
352 try expectEqual(@as(?MockRegister1, .r3), try function.register_manager.allocReg(&mock_instruction, &.{.r2}));
344 try expectEqual(@as(?MockRegister1, .r3), try function.register_manager.allocReg(mock_instruction, &.{.r2}));
353345}
354346
355347test "tryAllocRegs" {
......@@ -377,16 +369,12 @@ test "allocRegs" {
377369 };
378370 defer function.deinit();
379371
380 var mock_instruction = ir.Inst{
381 .tag = .breakpoint,
382 .ty = Type.initTag(.void),
383 .src = .unneeded,
384 };
372 const mock_instruction: Air.Inst.Index = 1;
385373
386374 try expectEqual([_]MockRegister2{ .r0, .r1, .r2 }, try function.register_manager.allocRegs(3, .{
387 &mock_instruction,
388 &mock_instruction,
389 &mock_instruction,
375 mock_instruction,
376 mock_instruction,
377 mock_instruction,
390378 }, &.{}));
391379
392380 // Exceptions
......@@ -402,13 +390,9 @@ test "getReg" {
402390 };
403391 defer function.deinit();
404392
405 var mock_instruction = ir.Inst{
406 .tag = .breakpoint,
407 .ty = Type.initTag(.void),
408 .src = .unneeded,
409 };
393 const mock_instruction: Air.Inst.Index = 1;
410394
411 try function.register_manager.getReg(.r3, &mock_instruction);
395 try function.register_manager.getReg(.r3, mock_instruction);
412396
413397 try expect(!function.register_manager.isRegAllocated(.r2));
414398 try expect(function.register_manager.isRegAllocated(.r3));
......@@ -416,7 +400,7 @@ test "getReg" {
416400 try expect(!function.register_manager.isRegFree(.r3));
417401
418402 // Spill r3
419 try function.register_manager.getReg(.r3, &mock_instruction);
403 try function.register_manager.getReg(.r3, mock_instruction);
420404
421405 try expect(!function.register_manager.isRegAllocated(.r2));
422406 try expect(function.register_manager.isRegAllocated(.r3));