Memory

Module

Defines functions for memory manipulations.

memcmp

memcmp[type: DType](s1: DTypePointer[type], s2: DTypePointer[type], count: Int) -> Int

Compare two buffers. Both strings are assumed to be of the same length.

Parameters:

  • type (DType): The element dtype.

Args:

  • s1 (DTypePointer[type]): The first buffer address.
  • s2 (DTypePointer[type]): The second buffer address.
  • count (Int): The number of elements in the buffers.

Returns:

Returns 0 if the bytes buffers are identical, 1 if s1 > s2, and -1 if s1 < s2. The comparison is performed by the first different byte in the buffer.

memcmp[type: AnyType](s1: Pointer[type], s2: Pointer[type], count: Int) -> Int

Compare two buffers. Both strings are assumed to be of the same length.

Parameters:

  • type (AnyType): The element type.

Args:

  • s1 (Pointer[type]): The first buffer address.
  • s2 (Pointer[type]): The second buffer address.
  • count (Int): The number of elements in the buffers.

Returns:

Returns 0 if the bytes strings are identical, 1 if s1 > s2, and -1 if s1 < s2. The comparison is performed by the first different byte in the byte strings.

memcpy

memcpy[type: AnyType](dest: Pointer[type], src: Pointer[type], count: Int)

Copy memory area.

Parameters:

  • type (AnyType): The element type.

Args:

  • dest (Pointer[type]): The destination pointer.
  • src (Pointer[type]): The source pointer.
  • count (Int): The number of elements to copy.

memcpy[type: DType](dest: DTypePointer[type], src: DTypePointer[type], count: Int)

Copy memory area.

Parameters:

  • type (DType): The element dtype.

Args:

  • dest (DTypePointer[type]): The destination pointer.
  • src (DTypePointer[type]): The source pointer.
  • count (Int): The number of elements to copy (not bytes!).

memcpy[type: DType, size: Dim](dest: Buffer[size, type], src: Buffer[size, type])

Copy the memory buffer from src to dest.

Parameters:

  • type (DType): The element dtype.
  • size (Dim): Number of elements in the buffer.

Args:

  • dest (Buffer[size, type]): The destination buffer.
  • src (Buffer[size, type]): The source buffer.

memset

memset[type: DType](ptr: DTypePointer[type], value: scalar<ui8>, count: Int)

Fill memory with the given value.

Parameters:

  • type (DType): The element dtype.

Args:

  • ptr (DTypePointer[type]): Pointer to the beginning of the memory block to fill.
  • value (scalar<ui8>): The value to fill with.
  • count (Int): Number of elements to fill (in elements, not bytes).

memset_zero

memset_zero[type: DType](ptr: DTypePointer[type], count: Int)

Fill memory with zeros.

Parameters:

  • type (DType): The element dtype.

Args:

  • ptr (DTypePointer[type]): Pointer to the beginning of the memory block to fill.
  • count (Int): Number of elements to set (in elements, not bytes).

memset_zero[type: AnyType](ptr: Pointer[type], count: Int)

Fill memory with zeros.

Parameters:

  • type (AnyType): The element type.

Args:

  • ptr (Pointer[type]): Pointer to the beginning of the memory block to fill.
  • count (Int): Number of elements to fill (in elements, not bytes).

stack_allocation

stack_allocation[count: Int, type: AnyType, alignment: Int]() -> Pointer[type]

Allocates data buffer space on the stack given a data type and number of elements.

Parameters:

  • count (Int): Number of elements to allocate memory for.
  • type (AnyType): The data type of each element.
  • alignment (Int): Address alignment of the allocated data.

Returns:

A data pointer of the given type pointing to the allocated space.