def init_mm_buffer(self, addr, size, offset = 0): code = spu.get_active_code() util.set_slot_value(code, self.mm_buffer, 0, addr) util.set_slot_value(code, self.mm_buffer, 1, size) util.set_slot_value(code, self.mm_buffer, 2, offset) return
def init_mm_buffer(self, addr, size, offset=0): code = spu.get_active_code() util.set_slot_value(code, self.mm_buffer, 0, addr) util.set_slot_value(code, self.mm_buffer, 1, size) util.set_slot_value(code, self.mm_buffer, 2, offset) return
def save_ls_buffer(self, ls_size = None, branch = False): code = spu.get_active_code() regs = [] if ls_size is None: ls_size = code.acquire_register() regs.append(ls_size) # Set the main memory address mm_offset = code.acquire_register() regs.append(mm_offset) spu.rotqbyi(mm_offset, self.mm_buffer, 4) spu.a(mm_offset, mm_offset, self.mm_buffer) # Tranfer the buffer md = spuiter.memory_desc('b') md.set_size_reg(ls_size) md.set_addr_reg(mm_offset) md.put(code, self.ls_buffer) # Increment the main memory offset mm_size = code.acquire_register() regs.append(mm_size) spu.rotqbyi(mm_size, self.mm_buffer, 8) spu.rotqbyi(mm_offset, self.mm_buffer, 4) spu.a(mm_offset, mm_offset, mm_size) util.set_slot_value(code, self.mm_buffer, 2, mm_offset) # Reset the ls offset util.set_slot_value(code, self.ls_buffer, 2, 0) code.release_registers(regs) return
def save_ls_buffer(self, ls_size=None, branch=False): code = spu.get_active_code() regs = [] if ls_size is None: ls_size = code.acquire_register() regs.append(ls_size) # Set the main memory address mm_offset = code.acquire_register() regs.append(mm_offset) spu.rotqbyi(mm_offset, self.mm_buffer, 4) spu.a(mm_offset, mm_offset, self.mm_buffer) # Tranfer the buffer md = spuiter.memory_desc('b') md.set_size_reg(ls_size) md.set_addr_reg(mm_offset) md.put(code, self.ls_buffer) # Increment the main memory offset mm_size = code.acquire_register() regs.append(mm_size) spu.rotqbyi(mm_size, self.mm_buffer, 8) spu.rotqbyi(mm_offset, self.mm_buffer, 4) spu.a(mm_offset, mm_offset, mm_size) util.set_slot_value(code, self.mm_buffer, 2, mm_offset) # Reset the ls offset util.set_slot_value(code, self.ls_buffer, 2, 0) code.release_registers(regs) return