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" {...@@ -296,15 +296,11 @@ test "tryAllocReg: no spilling" {
296 };296 };
297 defer function.deinit();297 defer function.deinit();
298298
299 var mock_instruction = ir.Inst{299 const mock_instruction: Air.Inst.Index = 1;
300 .tag = .breakpoint,
301 .ty = Type.initTag(.void),
302 .src = .unneeded,
303 };
304300
305 try expectEqual(@as(?MockRegister1, .r2), function.register_manager.tryAllocReg(&mock_instruction, &.{}));301 try expectEqual(@as(?MockRegister1, .r2), function.register_manager.tryAllocReg(mock_instruction, &.{}));
306 try expectEqual(@as(?MockRegister1, .r3), function.register_manager.tryAllocReg(&mock_instruction, &.{}));302 try expectEqual(@as(?MockRegister1, .r3), function.register_manager.tryAllocReg(mock_instruction, &.{}));
307 try expectEqual(@as(?MockRegister1, null), function.register_manager.tryAllocReg(&mock_instruction, &.{}));303 try expectEqual(@as(?MockRegister1, null), function.register_manager.tryAllocReg(mock_instruction, &.{}));
308304
309 try expect(function.register_manager.isRegAllocated(.r2));305 try expect(function.register_manager.isRegAllocated(.r2));
310 try expect(function.register_manager.isRegAllocated(.r3));306 try expect(function.register_manager.isRegAllocated(.r3));
...@@ -328,28 +324,24 @@ test "allocReg: spilling" {...@@ -328,28 +324,24 @@ test "allocReg: spilling" {
328 };324 };
329 defer function.deinit();325 defer function.deinit();
330326
331 var mock_instruction = ir.Inst{327 const mock_instruction: Air.Inst.Index = 1;
332 .tag = .breakpoint,
333 .ty = Type.initTag(.void),
334 .src = .unneeded,
335 };
336328
337 try expectEqual(@as(?MockRegister1, .r2), try function.register_manager.allocReg(&mock_instruction, &.{}));329 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, &.{}));330 try expectEqual(@as(?MockRegister1, .r3), try function.register_manager.allocReg(mock_instruction, &.{}));
339331
340 // Spill a register332 // 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, &.{}));
342 try expectEqualSlices(MockRegister1, &[_]MockRegister1{.r2}, function.spilled.items);334 try expectEqualSlices(MockRegister1, &[_]MockRegister1{.r2}, function.spilled.items);
343335
344 // No spilling necessary336 // No spilling necessary
345 function.register_manager.freeReg(.r3);337 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, &.{}));
347 try expectEqualSlices(MockRegister1, &[_]MockRegister1{.r2}, function.spilled.items);339 try expectEqualSlices(MockRegister1, &[_]MockRegister1{.r2}, function.spilled.items);
348340
349 // Exceptions341 // Exceptions
350 function.register_manager.freeReg(.r2);342 function.register_manager.freeReg(.r2);
351 function.register_manager.freeReg(.r3);343 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}));
353}345}
354346
355test "tryAllocRegs" {347test "tryAllocRegs" {
...@@ -377,16 +369,12 @@ test "allocRegs" {...@@ -377,16 +369,12 @@ test "allocRegs" {
377 };369 };
378 defer function.deinit();370 defer function.deinit();
379371
380 var mock_instruction = ir.Inst{372 const mock_instruction: Air.Inst.Index = 1;
381 .tag = .breakpoint,
382 .ty = Type.initTag(.void),
383 .src = .unneeded,
384 };
385373
386 try expectEqual([_]MockRegister2{ .r0, .r1, .r2 }, try function.register_manager.allocRegs(3, .{374 try expectEqual([_]MockRegister2{ .r0, .r1, .r2 }, try function.register_manager.allocRegs(3, .{
387 &mock_instruction,375 mock_instruction,
388 &mock_instruction,376 mock_instruction,
389 &mock_instruction,377 mock_instruction,
390 }, &.{}));378 }, &.{}));
391379
392 // Exceptions380 // Exceptions
...@@ -402,13 +390,9 @@ test "getReg" {...@@ -402,13 +390,9 @@ test "getReg" {
402 };390 };
403 defer function.deinit();391 defer function.deinit();
404392
405 var mock_instruction = ir.Inst{393 const mock_instruction: Air.Inst.Index = 1;
406 .tag = .breakpoint,
407 .ty = Type.initTag(.void),
408 .src = .unneeded,
409 };
410394
411 try function.register_manager.getReg(.r3, &mock_instruction);395 try function.register_manager.getReg(.r3, mock_instruction);
412396
413 try expect(!function.register_manager.isRegAllocated(.r2));397 try expect(!function.register_manager.isRegAllocated(.r2));
414 try expect(function.register_manager.isRegAllocated(.r3));398 try expect(function.register_manager.isRegAllocated(.r3));
...@@ -416,7 +400,7 @@ test "getReg" {...@@ -416,7 +400,7 @@ test "getReg" {
416 try expect(!function.register_manager.isRegFree(.r3));400 try expect(!function.register_manager.isRegFree(.r3));
417401
418 // Spill r3402 // Spill r3
419 try function.register_manager.getReg(.r3, &mock_instruction);403 try function.register_manager.getReg(.r3, mock_instruction);
420404
421 try expect(!function.register_manager.isRegAllocated(.r2));405 try expect(!function.register_manager.isRegAllocated(.r2));
422 try expect(function.register_manager.isRegAllocated(.r3));406 try expect(function.register_manager.isRegAllocated(.r3));