| ... | @@ -1377,8 +1377,7 @@ fn airMul(self: *Self, inst: Air.Inst.Index) !void { | ... | @@ -1377,8 +1377,7 @@ fn airMul(self: *Self, inst: Air.Inst.Index) !void { |
| 1377 | // Spill .rax and .rdx upfront to ensure we don't spill the operands too late. | 1377 | // Spill .rax and .rdx upfront to ensure we don't spill the operands too late. |
| 1378 | try self.register_manager.getReg(.rax, inst); | 1378 | try self.register_manager.getReg(.rax, inst); |
| 1379 | try self.register_manager.getReg(.rdx, null); | 1379 | try self.register_manager.getReg(.rdx, null); |
| 1380 | var reg_locks: [2]RegisterLock = undefined; | 1380 | const reg_locks = self.register_manager.lockRegsAssumeUnused(2, .{ .rax, .rdx }); |
| 1381 | self.register_manager.lockRegsAssumeUnused(2, .{ .rax, .rdx }, &reg_locks); | | |
| 1382 | defer for (reg_locks) |reg| { | 1381 | defer for (reg_locks) |reg| { |
| 1383 | self.register_manager.unlockReg(reg); | 1382 | self.register_manager.unlockReg(reg); |
| 1384 | }; | 1383 | }; |
| ... | @@ -1495,8 +1494,7 @@ fn airMulWithOverflow(self: *Self, inst: Air.Inst.Index) !void { | ... | @@ -1495,8 +1494,7 @@ fn airMulWithOverflow(self: *Self, inst: Air.Inst.Index) !void { |
| 1495 | // Spill .rax and .rdx upfront to ensure we don't spill the operands too late. | 1494 | // Spill .rax and .rdx upfront to ensure we don't spill the operands too late. |
| 1496 | try self.register_manager.getReg(.rax, inst); | 1495 | try self.register_manager.getReg(.rax, inst); |
| 1497 | try self.register_manager.getReg(.rdx, null); | 1496 | try self.register_manager.getReg(.rdx, null); |
| 1498 | var reg_locks: [2]RegisterLock = undefined; | 1497 | const reg_locks = self.register_manager.lockRegsAssumeUnused(2, .{ .rax, .rdx }); |
| 1499 | self.register_manager.lockRegsAssumeUnused(2, .{ .rax, .rdx }, &reg_locks); | | |
| 1500 | defer for (reg_locks) |reg| { | 1498 | defer for (reg_locks) |reg| { |
| 1501 | self.register_manager.unlockReg(reg); | 1499 | self.register_manager.unlockReg(reg); |
| 1502 | }; | 1500 | }; |
| ... | @@ -1556,8 +1554,7 @@ fn airMulWithOverflow(self: *Self, inst: Air.Inst.Index) !void { | ... | @@ -1556,8 +1554,7 @@ fn airMulWithOverflow(self: *Self, inst: Air.Inst.Index) !void { |
| 1556 | // Spill .rax and .rdx upfront to ensure we don't spill the operands too late. | 1554 | // Spill .rax and .rdx upfront to ensure we don't spill the operands too late. |
| 1557 | try self.register_manager.getReg(.rax, null); | 1555 | try self.register_manager.getReg(.rax, null); |
| 1558 | try self.register_manager.getReg(.rdx, null); | 1556 | try self.register_manager.getReg(.rdx, null); |
| 1559 | var reg_locks: [2]RegisterLock = undefined; | 1557 | const reg_locks = self.register_manager.lockRegsAssumeUnused(2, .{ .rax, .rdx }); |
| 1560 | self.register_manager.lockRegsAssumeUnused(2, .{ .rax, .rdx }, &reg_locks); | | |
| 1561 | defer for (reg_locks) |reg| { | 1558 | defer for (reg_locks) |reg| { |
| 1562 | self.register_manager.unlockReg(reg); | 1559 | self.register_manager.unlockReg(reg); |
| 1563 | }; | 1560 | }; |
| ... | @@ -1586,8 +1583,7 @@ fn airMulWithOverflow(self: *Self, inst: Air.Inst.Index) !void { | ... | @@ -1586,8 +1583,7 @@ fn airMulWithOverflow(self: *Self, inst: Air.Inst.Index) !void { |
| 1586 | }; | 1583 | }; |
| 1587 | | 1584 | |
| 1588 | const temp_regs = try self.register_manager.allocRegs(3, .{ null, null, null }); | 1585 | const temp_regs = try self.register_manager.allocRegs(3, .{ null, null, null }); |
| 1589 | var temp_regs_locks: [3]RegisterLock = undefined; | 1586 | const temp_regs_locks = self.register_manager.lockRegsAssumeUnused(3, temp_regs); |
| 1590 | self.register_manager.lockRegsAssumeUnused(3, temp_regs, &temp_regs_locks); | | |
| 1591 | defer for (temp_regs_locks) |reg| { | 1587 | defer for (temp_regs_locks) |reg| { |
| 1592 | self.register_manager.unlockReg(reg); | 1588 | self.register_manager.unlockReg(reg); |
| 1593 | }; | 1589 | }; |
| ... | @@ -1819,8 +1815,7 @@ fn airDiv(self: *Self, inst: Air.Inst.Index) !void { | ... | @@ -1819,8 +1815,7 @@ fn airDiv(self: *Self, inst: Air.Inst.Index) !void { |
| 1819 | }; | 1815 | }; |
| 1820 | try self.register_manager.getReg(.rax, track_rax); | 1816 | try self.register_manager.getReg(.rax, track_rax); |
| 1821 | try self.register_manager.getReg(.rdx, null); | 1817 | try self.register_manager.getReg(.rdx, null); |
| 1822 | var reg_locks: [2]RegisterLock = undefined; | 1818 | const reg_locks = self.register_manager.lockRegsAssumeUnused(2, .{ .rax, .rdx }); |
| 1823 | self.register_manager.lockRegsAssumeUnused(2, .{ .rax, .rdx }, &reg_locks); | | |
| 1824 | defer for (reg_locks) |reg| { | 1819 | defer for (reg_locks) |reg| { |
| 1825 | self.register_manager.unlockReg(reg); | 1820 | self.register_manager.unlockReg(reg); |
| 1826 | }; | 1821 | }; |
| ... | @@ -1893,8 +1888,7 @@ fn airRem(self: *Self, inst: Air.Inst.Index) !void { | ... | @@ -1893,8 +1888,7 @@ fn airRem(self: *Self, inst: Air.Inst.Index) !void { |
| 1893 | // Spill .rax and .rdx upfront to ensure we don't spill the operands too late. | 1888 | // Spill .rax and .rdx upfront to ensure we don't spill the operands too late. |
| 1894 | try self.register_manager.getReg(.rax, null); | 1889 | try self.register_manager.getReg(.rax, null); |
| 1895 | try self.register_manager.getReg(.rdx, inst); | 1890 | try self.register_manager.getReg(.rdx, inst); |
| 1896 | var reg_locks: [2]RegisterLock = undefined; | 1891 | const reg_locks = self.register_manager.lockRegsAssumeUnused(2, .{ .rax, .rdx }); |
| 1897 | self.register_manager.lockRegsAssumeUnused(2, .{ .rax, .rdx }, &reg_locks); | | |
| 1898 | defer for (reg_locks) |reg| { | 1892 | defer for (reg_locks) |reg| { |
| 1899 | self.register_manager.unlockReg(reg); | 1893 | self.register_manager.unlockReg(reg); |
| 1900 | }; | 1894 | }; |
| ... | @@ -1929,8 +1923,7 @@ fn airMod(self: *Self, inst: Air.Inst.Index) !void { | ... | @@ -1929,8 +1923,7 @@ fn airMod(self: *Self, inst: Air.Inst.Index) !void { |
| 1929 | // Spill .rax and .rdx upfront to ensure we don't spill the operands too late. | 1923 | // Spill .rax and .rdx upfront to ensure we don't spill the operands too late. |
| 1930 | try self.register_manager.getReg(.rax, null); | 1924 | try self.register_manager.getReg(.rax, null); |
| 1931 | try self.register_manager.getReg(.rdx, if (signedness == .unsigned) inst else null); | 1925 | try self.register_manager.getReg(.rdx, if (signedness == .unsigned) inst else null); |
| 1932 | var reg_locks: [2]RegisterLock = undefined; | 1926 | const reg_locks = self.register_manager.lockRegsAssumeUnused(2, .{ .rax, .rdx }); |
| 1933 | self.register_manager.lockRegsAssumeUnused(2, .{ .rax, .rdx }, &reg_locks); | | |
| 1934 | defer for (reg_locks) |reg| { | 1927 | defer for (reg_locks) |reg| { |
| 1935 | self.register_manager.unlockReg(reg); | 1928 | self.register_manager.unlockReg(reg); |
| 1936 | }; | 1929 | }; |
| ... | @@ -5552,8 +5545,7 @@ fn genInlineMemcpy( | ... | @@ -5552,8 +5545,7 @@ fn genInlineMemcpy( |
| 5552 | try self.register_manager.getReg(.rax, null); | 5545 | try self.register_manager.getReg(.rax, null); |
| 5553 | try self.register_manager.getReg(.rcx, null); | 5546 | try self.register_manager.getReg(.rcx, null); |
| 5554 | | 5547 | |
| 5555 | var reg_locks: [2]RegisterLock = undefined; | 5548 | const reg_locks = self.register_manager.lockRegsAssumeUnused(2, .{ .rax, .rcx }); |
| 5556 | self.register_manager.lockRegsAssumeUnused(2, .{ .rax, .rcx }, &reg_locks); | | |
| 5557 | defer for (reg_locks) |lock| { | 5549 | defer for (reg_locks) |lock| { |
| 5558 | self.register_manager.unlockReg(lock); | 5550 | self.register_manager.unlockReg(lock); |
| 5559 | }; | 5551 | }; |