| ... | ... | @@ -2089,12 +2089,14 @@ fn airMulWithOverflow(self: *Self, inst: Air.Inst.Index) !void { |
| 2089 | 2089 | else => {}, |
| 2090 | 2090 | } |
| 2091 | 2091 | |
| 2092 | // For now, this is the only supported multiply that doesn't fit in a register. |
| 2093 | assert(dst_info.bits == 128 and src_pl.data == 64); |
| 2092 | 2094 | const dst_abi_size = @intCast(i32, dst_ty.abiSize(self.target.*)); |
| 2093 | 2095 | const dst_mcv = try self.allocRegOrMem(inst, false); |
| 2094 | 2096 | try self.genSetStack( |
| 2095 | 2097 | Type.u1, |
| 2096 | 2098 | dst_mcv.stack_offset - dst_abi_size, |
| 2097 | | .{ .eflags = cc }, |
| 2099 | .{ .immediate = 0 }, // 64x64 -> 128 never overflows |
| 2098 | 2100 | .{}, |
| 2099 | 2101 | ); |
| 2100 | 2102 | try self.genSetStack(dst_ty, dst_mcv.stack_offset, partial_mcv, .{}); |