From e77bd2cd23b398d3bc4f7905c5fa17f01adb4979 Mon Sep 17 00:00:00 2001 From: ilgeco Date: Wed, 8 Apr 2026 20:37:25 +0200 Subject: [PATCH] Bug fix send and recive in simulator --- .../pim/pim-simulator/src/lib/send_recv.rs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/backend-simulators/pim/pim-simulator/src/lib/send_recv.rs b/backend-simulators/pim/pim-simulator/src/lib/send_recv.rs index 351f8d0..c6322fd 100644 --- a/backend-simulators/pim/pim-simulator/src/lib/send_recv.rs +++ b/backend-simulators/pim/pim-simulator/src/lib/send_recv.rs @@ -107,12 +107,17 @@ pub fn handle_send_recv( let receiver: usize = imm_core.try_into().expect("imm_core can not be negative"); assert_ne!(receiver, 0, "Host can not use receive"); send_recv.sending[sender] = Some(SendRecvInfo::new(sender, receiver, address, imm_len)); - transfer_memory( + let transfered = transfer_memory( cpu, core_instructions, send_recv.sending[sender], send_recv.receiving[receiver], - ) + ); + if transfered { + send_recv.sending[sender] = None; + send_recv.receiving[receiver] = None; + } + return transfered; } InstructionStatus::Reciving(instruction_data) => { let (core_idx, imm_core) = instruction_data.get_core_immcore(); @@ -131,12 +136,17 @@ pub fn handle_send_recv( assert_ne!(sender, 0, "Host can not use send"); send_recv.receiving[receiver] = Some(SendRecvInfo::new(receiver, sender, address, imm_len)); - transfer_memory( + let transfered = transfer_memory( cpu, core_instructions, send_recv.sending[sender], send_recv.receiving[receiver], - ) + ); + if transfered { + send_recv.sending[sender] = None; + send_recv.receiving[receiver] = None; + } + return transfered; } _ => false, }