diff --git a/nac3artiq/src/codegen.rs b/nac3artiq/src/codegen.rs index 1c78b27b..c87f3b88 100644 --- a/nac3artiq/src/codegen.rs +++ b/nac3artiq/src/codegen.rs @@ -639,76 +639,76 @@ fn format_rpc_ret<'ctx>( .map(BasicValueEnum::into_int_value) .unwrap(); - // // Parse metadata block(s) for ndarrays - // gen_if_callback( - // generator, - // ctx, - // |_, ctx| { - // let i = ctx - // .builder - // .build_load(i_addr, "") - // .map(BasicValueEnum::into_int_value) - // .unwrap(); - // - // Ok(ctx - // .builder - // .build_int_compare(IntPredicate::ULT, i, metadata_blocks, "") - // .unwrap()) - // }, - // |generator, ctx| { - // // let ppdata = - // // generator.gen_var_alloc(ctx, llvm_ret_ty.element_type(), None).unwrap(); - // // ctx.builder - // // .build_store(ppdata, ndarray.data().base_ptr(ctx, generator)) - // // .unwrap(); - // // call_memcpy_generic( - // // ctx, - // // ppdata, - // // buffer.base_ptr(ctx, generator), - // // llvm_pdata_sizeof, - // // llvm_i1.const_zero(), - // // ); - // // - // // let pbuffer_dims_begin = unsafe { - // // buffer.ptr_offset_unchecked(ctx, generator, &llvm_pdata_sizeof, None) - // // }; - // // call_memcpy_generic( - // // ctx, - // // ndarray.dim_sizes().base_ptr(ctx, generator), - // // pbuffer_dims_begin, - // // dims_buf_sz, - // // llvm_i1.const_zero(), - // // ); - // - // call_memcpy_generic( - // ctx, - // ndarray.dim_sizes().base_ptr(ctx, generator), - // buffer.base_ptr(ctx, generator), - // dims_buf_sz, - // llvm_i1.const_zero(), - // ); - // - // let ppdata = - // generator.gen_var_alloc(ctx, llvm_ret_ty.element_type(), None).unwrap(); - // let pbuffer_data_begin = unsafe { - // buffer.ptr_offset_unchecked(ctx, generator, &dims_buf_sz, None) - // }; - // ctx.builder - // .build_store(ppdata, ndarray.data().base_ptr(ctx, generator)) - // .unwrap(); - // call_memcpy_generic( - // ctx, - // ppdata, - // pbuffer_data_begin, - // llvm_pdata_sizeof, - // llvm_i1.const_zero(), - // ); - // - // Ok(()) - // }, - // |_, _| Ok(()), - // ) - // .unwrap(); + // Parse metadata block(s) for ndarrays + gen_if_callback( + generator, + ctx, + |_, ctx| { + let i = ctx + .builder + .build_load(i_addr, "") + .map(BasicValueEnum::into_int_value) + .unwrap(); + + Ok(ctx + .builder + .build_int_compare(IntPredicate::ULT, i, metadata_blocks, "") + .unwrap()) + }, + |generator, ctx| { + let ppdata = + generator.gen_var_alloc(ctx, llvm_ret_ty.element_type(), None).unwrap(); + ctx.builder + .build_store(ppdata, ndarray.data().base_ptr(ctx, generator)) + .unwrap(); + call_memcpy_generic( + ctx, + ppdata, + buffer.base_ptr(ctx, generator), + llvm_pdata_sizeof, + llvm_i1.const_zero(), + ); + + let pbuffer_dims_begin = unsafe { + buffer.ptr_offset_unchecked(ctx, generator, &llvm_pdata_sizeof, None) + }; + call_memcpy_generic( + ctx, + ndarray.dim_sizes().base_ptr(ctx, generator), + pbuffer_dims_begin, + dims_buf_sz, + llvm_i1.const_zero(), + ); + + // call_memcpy_generic( + // ctx, + // ndarray.dim_sizes().base_ptr(ctx, generator), + // buffer.base_ptr(ctx, generator), + // dims_buf_sz, + // llvm_i1.const_zero(), + // ); + // + // let ppdata = + // generator.gen_var_alloc(ctx, llvm_ret_ty.element_type(), None).unwrap(); + // let pbuffer_data_begin = unsafe { + // buffer.ptr_offset_unchecked(ctx, generator, &dims_buf_sz, None) + // }; + // ctx.builder + // .build_store(ppdata, ndarray.data().base_ptr(ctx, generator)) + // .unwrap(); + // call_memcpy_generic( + // ctx, + // ppdata, + // pbuffer_data_begin, + // llvm_pdata_sizeof, + // llvm_i1.const_zero(), + // ); + + Ok(()) + }, + |_, _| Ok(()), + ) + .unwrap(); let is_done = ctx .builder