Skip to main content
Log in

Mojo function

partial_simd_load

partial_simd_load[type: DType, //, width: Int](storage: UnsafePointer[SIMD[type, 1], address_space=address_space, alignment=alignment, origin=origin], lbound: Int, rbound: Int, pad_value: SIMD[type, 1]) -> SIMD[type, width]

Loads a vector with dynamic bound.

Out of bound data will be filled with pad value. Data is valid if lbound <= idx < rbound for idx from 0 to (simd_width-1). For example:

addr 0  1  2  3
data x 42 43 x

partial_simd_load[4](addr0, 1, 3) #gives [0 42 43 0]
addr 0  1  2  3
data x 42 43 x

partial_simd_load[4](addr0, 1, 3) #gives [0 42 43 0]

Parameters:

  • type (DType): The DType of storage.
  • width (Int): The system simd vector size.

Args:

  • storage (UnsafePointer[SIMD[type, 1], address_space=address_space, alignment=alignment, origin=origin]): Pointer to the address to perform load.
  • lbound (Int): Lower bound of valid index within simd (inclusive).
  • rbound (Int): Upper bound of valid index within simd (non-inclusive).
  • pad_value (SIMD[type, 1]): Value to fill for out of bound indices.

Returns:

The SIMD vector loaded and zero-filled.