# Function std::intrinsics::simd::simd_gather

source · ```
pub unsafe extern "rust-intrinsic" fn simd_gather<T, U, V>(
val: T,
ptr: U,
mask: V,
) -> T
```

🔬This is a nightly-only experimental API. (

`core_intrinsics`

)## Expand description

Read a vector of pointers.

`T`

must be a vector.

`U`

must be a vector of pointers to the element type of `T`

, with the same length as `T`

.

`V`

must be a vector of integers with the same length as `T`

(but any element size).

`idx`

must be a constant: either naming a constant item, or an inline
`const {}`

expression.

For each pointer in `ptr`

, if the corresponding value in `mask`

is `!0`

, read the pointer.
Otherwise if the corresponding value in `mask`

is `0`

, return the corresponding value from
`val`

.

## §Safety

Unmasked values in `T`

must be readable as if by `<ptr>::read`

(e.g. aligned to the element
type).

`mask`

must only contain `0`

or `!0`

values.