| ... | @@ -5042,21 +5042,12 @@ fn br(self: *Self, block: Air.Inst.Index, operand: Air.Inst.Ref) !void { | ... | @@ -5042,21 +5042,12 @@ fn br(self: *Self, block: Air.Inst.Index, operand: Air.Inst.Ref) !void { |
| 5042 | if (block_mcv == .none) { | 5042 | if (block_mcv == .none) { |
| 5043 | block_data.mcv = switch (operand_mcv) { | 5043 | block_data.mcv = switch (operand_mcv) { |
| 5044 | .none, .dead, .unreach => unreachable, | 5044 | .none, .dead, .unreach => unreachable, |
| 5045 | .stack_offset, .memory => operand_mcv, | 5045 | .register, .stack_offset, .memory => operand_mcv, |
| 5046 | .compare_flags_signed, .compare_flags_unsigned, .immediate => blk: { | 5046 | .compare_flags_signed, .compare_flags_unsigned, .immediate => blk: { |
| 5047 | const new_mcv = try self.allocRegOrMem(block, true); | 5047 | const new_mcv = try self.allocRegOrMem(block, true); |
| 5048 | try self.setRegOrMem(self.air.typeOfIndex(block), new_mcv, operand_mcv); | 5048 | try self.setRegOrMem(self.air.typeOfIndex(block), new_mcv, operand_mcv); |
| 5049 | break :blk new_mcv; | 5049 | break :blk new_mcv; |
| 5050 | }, | 5050 | }, |
| 5051 | .register => blk: { | | |
| 5052 | if (self.air.typeOfIndex(block).zigTypeTag() == .Float) { | | |
| 5053 | // TODO not needed; return operand_mcv ones we can transfer between XMM registers | | |
| 5054 | const new_mcv = try self.allocRegOrMem(block, false); | | |
| 5055 | try self.setRegOrMem(self.air.typeOfIndex(block), new_mcv, operand_mcv); | | |
| 5056 | break :blk new_mcv; | | |
| 5057 | } | | |
| 5058 | break :blk operand_mcv; | | |
| 5059 | }, | | |
| 5060 | else => return self.fail("TODO implement block_data.mcv = operand_mcv for {}", .{operand_mcv}), | 5051 | else => return self.fail("TODO implement block_data.mcv = operand_mcv for {}", .{operand_mcv}), |
| 5061 | }; | 5052 | }; |
| 5062 | } else { | 5053 | } else { |