Ejemplo n.º 1
0
 def codegen(context, builder, signature, args):
     [
         dst_val, dst_offset_val, src_val, src_offset_val, nbytes_val,
         align_val
     ] = args
     src_ptr = builder.gep(src_val, [src_offset_val])
     dst_ptr = builder.gep(dst_val, [dst_offset_val])
     cgutils.raw_memcpy(builder, dst_ptr, src_ptr, nbytes_val, align_val)
     return context.get_dummy_value()
Ejemplo n.º 2
0
def _image_to_array(context, builder, shapes_array, arrtype, data, img):
    # allocate array
    shapes = cgutils.unpack_tuple(builder, builder.load(shapes_array))
    ary = _empty_nd_impl(context, builder, arrtype, shapes)
    cgutils.raw_memcpy(builder,
                       ary.data,
                       builder.load(data),
                       ary.nitems,
                       ary.itemsize,
                       align=1)

    # clean up cv::Mat image
    fnty = lir.FunctionType(lir.VoidType(), [lir.IntType(8).as_pointer()])
    fn_release = builder.module.get_or_insert_function(fnty,
                                                       name="cv_mat_release")
    builder.call(fn_release, [img])

    return impl_ret_new_ref(context, builder, arrtype, ary._getvalue())
Ejemplo n.º 3
0
    def codegen(context, builder, sig, args):
        assert (len(args) == 2)
        data = args[0]
        shape = args[1]
        # XXX: unnecessary allocation and copy, reuse data pointer
        shape_list = cgutils.unpack_tuple(builder, shape, shape.type.count)
        ary = _empty_nd_impl(context, builder, arr_typ, shape_list)
        cgutils.raw_memcpy(builder,
                           ary.data,
                           data,
                           ary.nitems,
                           ary.itemsize,
                           align=1)

        # clean up image buffer
        fnty = lir.FunctionType(lir.VoidType(), [lir.IntType(8).as_pointer()])
        fn_release = builder.module.get_or_insert_function(
            fnty, name="cv_delete_buf")
        builder.call(fn_release, [data])

        return impl_ret_new_ref(context, builder, sig.return_type,
                                ary._getvalue())