| ... | @@ -7276,7 +7276,20 @@ fn packedLoad(self: *Self, dst_mcv: MCValue, ptr_ty: Type, ptr_mcv: MCValue) Inn | ... | @@ -7276,7 +7276,20 @@ fn packedLoad(self: *Self, dst_mcv: MCValue, ptr_ty: Type, ptr_mcv: MCValue) Inn |
| 7276 | else => |vector_index| @intFromEnum(vector_index) * val_bit_size, | 7276 | else => |vector_index| @intFromEnum(vector_index) * val_bit_size, |
| 7277 | }; | 7277 | }; |
| 7278 | if (ptr_bit_off % 8 == 0) { | 7278 | if (ptr_bit_off % 8 == 0) { |
| 7279 | try self.load(dst_mcv, ptr_ty, ptr_mcv.offset(@intCast(@divExact(ptr_bit_off, 8)))); | 7279 | { |
| | 7280 | const mat_ptr_mcv: MCValue = switch (ptr_mcv) { |
| | 7281 | .immediate, .register, .register_offset, .lea_frame => ptr_mcv, |
| | 7282 | else => .{ .register = try self.copyToTmpRegister(ptr_ty, ptr_mcv) }, |
| | 7283 | }; |
| | 7284 | const mat_ptr_lock = switch (mat_ptr_mcv) { |
| | 7285 | .register => |mat_ptr_reg| self.register_manager.lockReg(mat_ptr_reg), |
| | 7286 | else => null, |
| | 7287 | }; |
| | 7288 | defer if (mat_ptr_lock) |lock| self.register_manager.unlockReg(lock); |
| | 7289 | |
| | 7290 | try self.load(dst_mcv, ptr_ty, mat_ptr_mcv.offset(@intCast(@divExact(ptr_bit_off, 8)))); |
| | 7291 | } |
| | 7292 | |
| 7280 | if (val_abi_size * 8 > val_bit_size) { | 7293 | if (val_abi_size * 8 > val_bit_size) { |
| 7281 | if (dst_mcv.isRegister()) { | 7294 | if (dst_mcv.isRegister()) { |
| 7282 | try self.truncateRegister(val_ty, dst_mcv.getReg().?); | 7295 | try self.truncateRegister(val_ty, dst_mcv.getReg().?); |