예제 #1
0
 def load_direct(self, byteoffset):
     """
     Generic load from the given *byteoffset*.  load_aligned() is
     preferred if possible.
     """
     ptr = cgutils.pointer_add(self.builder, self.dataptr, byteoffset)
     return self.context.unpack_value(self.builder, self.fe_type, ptr)
예제 #2
0
 def access_member(member_offset):
     # Access member by byte offset
     offset = c.context.get_constant(types.uintp, member_offset)
     llvoidptr = ir.IntType(8).as_pointer()
     ptr = cgutils.pointer_add(c.builder, val, offset)
     casted = c.builder.bitcast(ptr, llvoidptr.as_pointer())
     return c.builder.load(casted)
예제 #3
0
파일: cpu.py 프로젝트: matteobachetti/numba
 def get_env_body(self, builder, envptr):
     """
     From the given *envptr* (a pointer to a _dynfunc.Environment object),
     get a EnvBody allowing structured access to environment fields.
     """
     body_ptr = cgutils.pointer_add(
         builder, envptr, _dynfunc._impl_info['offsetof_env_body'])
     return EnvBody(self, builder, ref=body_ptr, cast_ref=True)
예제 #4
0
 def get_generator_state(self, builder, genptr, return_type):
     """
     From the given *genptr* (a pointer to a _dynfunc.Generator object),
     get a pointer to its state area.
     """
     return cgutils.pointer_add(
         builder, genptr, _dynfunc._impl_info['offsetof_generator_state'],
         return_type=return_type)
예제 #5
0
    def load(self, context, builder, data, ind):
        arytyp = types.Array(dtype=self.dtype, ndim=self.ndim, layout="A")
        arycls = context.make_array(arytyp)

        array = arycls(context, builder)
        offseted_data = cgutils.pointer_add(builder, data,
                                            builder.mul(self.core_step, ind))

        shape, strides = self._shape_and_strides(context, builder)

        itemsize = context.get_abi_sizeof(context.get_data_type(self.dtype))
        context.populate_array(array,
                               data=builder.bitcast(offseted_data,
                                                    array.data.type),
                               shape=shape,
                               strides=strides,
                               itemsize=context.get_constant(
                                   types.intp, itemsize),
                               meminfo=None)

        return array._getvalue()
예제 #6
0
 def store_direct(self, value, byteoffset):
     ptr = cgutils.pointer_add(self.builder, self.dataptr, byteoffset)
     self.context.pack_value(self.builder, self.fe_type, value, ptr)
예제 #7
0
 def set_member(member_offset, value):
     # Access member by byte offset
     offset = c.context.get_constant(types.uintp, member_offset)
     ptr = cgutils.pointer_add(c.builder, box, offset)
     casted = c.builder.bitcast(ptr, llvoidptr.as_pointer())
     c.builder.store(value, casted)