Skip to main content

function

partial_simd_load

partial_simd_load[width: Int](storage: DTypePointer[type, address_space], lbound: Int, rbound: Int, pad_value: SIMD[type, 1]) -> SIMD[$1, $0]

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]

Parameters:

  • width (Int): The system simd vector size.

Args:

  • storage (DTypePointer[type, address_space]): 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.