| ... | @@ -1841,7 +1841,7 @@ fn airMinMax( | ... | @@ -1841,7 +1841,7 @@ fn airMinMax( |
| 1841 | if (int_info.bits > 64) return self.fail("TODO: > 64 bit @min", .{}); | 1841 | if (int_info.bits > 64) return self.fail("TODO: > 64 bit @min", .{}); |
| 1842 | | 1842 | |
| 1843 | const lhs_reg, const lhs_lock = blk: { | 1843 | const lhs_reg, const lhs_lock = blk: { |
| 1844 | if (lhs == .register) break :blk .{ lhs.register, null }; | 1844 | if (lhs == .register) break :blk .{ lhs.register, self.register_manager.lockReg(lhs.register) }; |
| 1845 | | 1845 | |
| 1846 | const lhs_reg, const lhs_lock = try self.allocReg(); | 1846 | const lhs_reg, const lhs_lock = try self.allocReg(); |
| 1847 | try self.genSetReg(lhs_ty, lhs_reg, lhs); | 1847 | try self.genSetReg(lhs_ty, lhs_reg, lhs); |
| ... | @@ -1850,7 +1850,7 @@ fn airMinMax( | ... | @@ -1850,7 +1850,7 @@ fn airMinMax( |
| 1850 | defer if (lhs_lock) |lock| self.register_manager.unlockReg(lock); | 1850 | defer if (lhs_lock) |lock| self.register_manager.unlockReg(lock); |
| 1851 | | 1851 | |
| 1852 | const rhs_reg, const rhs_lock = blk: { | 1852 | const rhs_reg, const rhs_lock = blk: { |
| 1853 | if (rhs == .register) break :blk .{ rhs.register, null }; | 1853 | if (rhs == .register) break :blk .{ rhs.register, self.register_manager.lockReg(rhs.register) }; |
| 1854 | | 1854 | |
| 1855 | const rhs_reg, const rhs_lock = try self.allocReg(); | 1855 | const rhs_reg, const rhs_lock = try self.allocReg(); |
| 1856 | try self.genSetReg(rhs_ty, rhs_reg, rhs); | 1856 | try self.genSetReg(rhs_ty, rhs_reg, rhs); |
| ... | @@ -2088,7 +2088,7 @@ fn binOpRegister( | ... | @@ -2088,7 +2088,7 @@ fn binOpRegister( |
| 2088 | rhs_ty: Type, | 2088 | rhs_ty: Type, |
| 2089 | ) !MCValue { | 2089 | ) !MCValue { |
| 2090 | const lhs_reg, const lhs_lock = blk: { | 2090 | const lhs_reg, const lhs_lock = blk: { |
| 2091 | if (lhs == .register) break :blk .{ lhs.register, null }; | 2091 | if (lhs == .register) break :blk .{ lhs.register, self.register_manager.lockReg(lhs.register) }; |
| 2092 | | 2092 | |
| 2093 | const lhs_reg, const lhs_lock = try self.allocReg(); | 2093 | const lhs_reg, const lhs_lock = try self.allocReg(); |
| 2094 | try self.genSetReg(lhs_ty, lhs_reg, lhs); | 2094 | try self.genSetReg(lhs_ty, lhs_reg, lhs); |
| ... | @@ -2097,7 +2097,7 @@ fn binOpRegister( | ... | @@ -2097,7 +2097,7 @@ fn binOpRegister( |
| 2097 | defer if (lhs_lock) |lock| self.register_manager.unlockReg(lock); | 2097 | defer if (lhs_lock) |lock| self.register_manager.unlockReg(lock); |
| 2098 | | 2098 | |
| 2099 | const rhs_reg, const rhs_lock = blk: { | 2099 | const rhs_reg, const rhs_lock = blk: { |
| 2100 | if (rhs == .register) break :blk .{ rhs.register, null }; | 2100 | if (rhs == .register) break :blk .{ rhs.register, self.register_manager.lockReg(rhs.register) }; |
| 2101 | | 2101 | |
| 2102 | const rhs_reg, const rhs_lock = try self.allocReg(); | 2102 | const rhs_reg, const rhs_lock = try self.allocReg(); |
| 2103 | try self.genSetReg(rhs_ty, rhs_reg, rhs); | 2103 | try self.genSetReg(rhs_ty, rhs_reg, rhs); |
| ... | @@ -2358,7 +2358,7 @@ fn airSubWithOverflow(self: *Self, inst: Air.Inst.Index) !void { | ... | @@ -2358,7 +2358,7 @@ fn airSubWithOverflow(self: *Self, inst: Air.Inst.Index) !void { |
| 2358 | const offset = result_mcv.load_frame; | 2358 | const offset = result_mcv.load_frame; |
| 2359 | | 2359 | |
| 2360 | const lhs_reg, const lhs_lock = blk: { | 2360 | const lhs_reg, const lhs_lock = blk: { |
| 2361 | if (lhs == .register) break :blk .{ lhs.register, null }; | 2361 | if (lhs == .register) break :blk .{ lhs.register, self.register_manager.lockReg(lhs.register) }; |
| 2362 | | 2362 | |
| 2363 | const lhs_reg, const lhs_lock = try self.allocReg(); | 2363 | const lhs_reg, const lhs_lock = try self.allocReg(); |
| 2364 | try self.genSetReg(lhs_ty, lhs_reg, lhs); | 2364 | try self.genSetReg(lhs_ty, lhs_reg, lhs); |
| ... | @@ -2367,7 +2367,7 @@ fn airSubWithOverflow(self: *Self, inst: Air.Inst.Index) !void { | ... | @@ -2367,7 +2367,7 @@ fn airSubWithOverflow(self: *Self, inst: Air.Inst.Index) !void { |
| 2367 | defer if (lhs_lock) |lock| self.register_manager.unlockReg(lock); | 2367 | defer if (lhs_lock) |lock| self.register_manager.unlockReg(lock); |
| 2368 | | 2368 | |
| 2369 | const rhs_reg, const rhs_lock = blk: { | 2369 | const rhs_reg, const rhs_lock = blk: { |
| 2370 | if (rhs == .register) break :blk .{ rhs.register, null }; | 2370 | if (rhs == .register) break :blk .{ rhs.register, self.register_manager.lockReg(rhs.register) }; |
| 2371 | | 2371 | |
| 2372 | const rhs_reg, const rhs_lock = try self.allocReg(); | 2372 | const rhs_reg, const rhs_lock = try self.allocReg(); |
| 2373 | try self.genSetReg(rhs_ty, rhs_reg, rhs); | 2373 | try self.genSetReg(rhs_ty, rhs_reg, rhs); |
| ... | @@ -2596,7 +2596,7 @@ fn airBitAnd(self: *Self, inst: Air.Inst.Index) !void { | ... | @@ -2596,7 +2596,7 @@ fn airBitAnd(self: *Self, inst: Air.Inst.Index) !void { |
| 2596 | const rhs_ty = self.typeOf(bin_op.rhs); | 2596 | const rhs_ty = self.typeOf(bin_op.rhs); |
| 2597 | | 2597 | |
| 2598 | const lhs_reg, const lhs_lock = blk: { | 2598 | const lhs_reg, const lhs_lock = blk: { |
| 2599 | if (lhs == .register) break :blk .{ lhs.register, null }; | 2599 | if (lhs == .register) break :blk .{ lhs.register, self.register_manager.lockReg(lhs.register) }; |
| 2600 | | 2600 | |
| 2601 | const lhs_reg, const lhs_lock = try self.allocReg(); | 2601 | const lhs_reg, const lhs_lock = try self.allocReg(); |
| 2602 | try self.genSetReg(lhs_ty, lhs_reg, lhs); | 2602 | try self.genSetReg(lhs_ty, lhs_reg, lhs); |
| ... | @@ -2605,7 +2605,7 @@ fn airBitAnd(self: *Self, inst: Air.Inst.Index) !void { | ... | @@ -2605,7 +2605,7 @@ fn airBitAnd(self: *Self, inst: Air.Inst.Index) !void { |
| 2605 | defer if (lhs_lock) |lock| self.register_manager.unlockReg(lock); | 2605 | defer if (lhs_lock) |lock| self.register_manager.unlockReg(lock); |
| 2606 | | 2606 | |
| 2607 | const rhs_reg, const rhs_lock = blk: { | 2607 | const rhs_reg, const rhs_lock = blk: { |
| 2608 | if (rhs == .register) break :blk .{ rhs.register, null }; | 2608 | if (rhs == .register) break :blk .{ rhs.register, self.register_manager.lockReg(rhs.register) }; |
| 2609 | | 2609 | |
| 2610 | const rhs_reg, const rhs_lock = try self.allocReg(); | 2610 | const rhs_reg, const rhs_lock = try self.allocReg(); |
| 2611 | try self.genSetReg(rhs_ty, rhs_reg, rhs); | 2611 | try self.genSetReg(rhs_ty, rhs_reg, rhs); |
| ... | @@ -2641,7 +2641,7 @@ fn airBitOr(self: *Self, inst: Air.Inst.Index) !void { | ... | @@ -2641,7 +2641,7 @@ fn airBitOr(self: *Self, inst: Air.Inst.Index) !void { |
| 2641 | const rhs_ty = self.typeOf(bin_op.rhs); | 2641 | const rhs_ty = self.typeOf(bin_op.rhs); |
| 2642 | | 2642 | |
| 2643 | const lhs_reg, const lhs_lock = blk: { | 2643 | const lhs_reg, const lhs_lock = blk: { |
| 2644 | if (lhs == .register) break :blk .{ lhs.register, null }; | 2644 | if (lhs == .register) break :blk .{ lhs.register, self.register_manager.lockReg(lhs.register) }; |
| 2645 | | 2645 | |
| 2646 | const lhs_reg, const lhs_lock = try self.allocReg(); | 2646 | const lhs_reg, const lhs_lock = try self.allocReg(); |
| 2647 | try self.genSetReg(lhs_ty, lhs_reg, lhs); | 2647 | try self.genSetReg(lhs_ty, lhs_reg, lhs); |
| ... | @@ -2650,7 +2650,7 @@ fn airBitOr(self: *Self, inst: Air.Inst.Index) !void { | ... | @@ -2650,7 +2650,7 @@ fn airBitOr(self: *Self, inst: Air.Inst.Index) !void { |
| 2650 | defer if (lhs_lock) |lock| self.register_manager.unlockReg(lock); | 2650 | defer if (lhs_lock) |lock| self.register_manager.unlockReg(lock); |
| 2651 | | 2651 | |
| 2652 | const rhs_reg, const rhs_lock = blk: { | 2652 | const rhs_reg, const rhs_lock = blk: { |
| 2653 | if (rhs == .register) break :blk .{ rhs.register, null }; | 2653 | if (rhs == .register) break :blk .{ rhs.register, self.register_manager.lockReg(rhs.register) }; |
| 2654 | | 2654 | |
| 2655 | const rhs_reg, const rhs_lock = try self.allocReg(); | 2655 | const rhs_reg, const rhs_lock = try self.allocReg(); |
| 2656 | try self.genSetReg(rhs_ty, rhs_reg, rhs); | 2656 | try self.genSetReg(rhs_ty, rhs_reg, rhs); |
| ... | @@ -4717,7 +4717,7 @@ fn airBoolOp(self: *Self, inst: Air.Inst.Index) !void { | ... | @@ -4717,7 +4717,7 @@ fn airBoolOp(self: *Self, inst: Air.Inst.Index) !void { |
| 4717 | const rhs_ty = Type.bool; | 4717 | const rhs_ty = Type.bool; |
| 4718 | | 4718 | |
| 4719 | const lhs_reg, const lhs_lock = blk: { | 4719 | const lhs_reg, const lhs_lock = blk: { |
| 4720 | if (lhs == .register) break :blk .{ lhs.register, null }; | 4720 | if (lhs == .register) break :blk .{ lhs.register, self.register_manager.lockReg(lhs.register) }; |
| 4721 | | 4721 | |
| 4722 | const lhs_reg, const lhs_lock = try self.allocReg(); | 4722 | const lhs_reg, const lhs_lock = try self.allocReg(); |
| 4723 | try self.genSetReg(lhs_ty, lhs_reg, lhs); | 4723 | try self.genSetReg(lhs_ty, lhs_reg, lhs); |
| ... | @@ -4726,7 +4726,7 @@ fn airBoolOp(self: *Self, inst: Air.Inst.Index) !void { | ... | @@ -4726,7 +4726,7 @@ fn airBoolOp(self: *Self, inst: Air.Inst.Index) !void { |
| 4726 | defer if (lhs_lock) |lock| self.register_manager.unlockReg(lock); | 4726 | defer if (lhs_lock) |lock| self.register_manager.unlockReg(lock); |
| 4727 | | 4727 | |
| 4728 | const rhs_reg, const rhs_lock = blk: { | 4728 | const rhs_reg, const rhs_lock = blk: { |
| 4729 | if (rhs == .register) break :blk .{ rhs.register, null }; | 4729 | if (rhs == .register) break :blk .{ rhs.register, self.register_manager.lockReg(rhs.register) }; |
| 4730 | | 4730 | |
| 4731 | const rhs_reg, const rhs_lock = try self.allocReg(); | 4731 | const rhs_reg, const rhs_lock = try self.allocReg(); |
| 4732 | try self.genSetReg(rhs_ty, rhs_reg, rhs); | 4732 | try self.genSetReg(rhs_ty, rhs_reg, rhs); |