# Function _mm_insert_ps

1.27.0 · Source

    pub fn _mm_insert_ps(a: __m128, b: __m128, const IMM8: i32) -> __m128

Available on (x86 or x86-64) and target feature `sse4.1` and x86-64 only.
Expand description

Select a single value in `b` to store at some position in `a`, Then zero elements according to `IMM8`.

`IMM8` specifies which bits from operand `b` will be copied, which bits in the result they will be copied to, and which bits in the result will be cleared. The following assignments are made:

- Bits `[7:6]` specify the bits to copy from operand `b`:

  - `00`: Selects bits `[31:0]` from operand `b`.
  - `01`: Selects bits `[63:32]` from operand `b`.
  - `10`: Selects bits `[95:64]` from operand `b`.
  - `11`: Selects bits `[127:96]` from operand `b`.

- Bits `[5:4]` specify the bits in the result to which the selected bits from operand `b` are copied:

  - `00`: Copies the selected bits from `b` to result bits `[31:0]`.
  - `01`: Copies the selected bits from `b` to result bits `[63:32]`.
  - `10`: Copies the selected bits from `b` to result bits `[95:64]`.
  - `11`: Copies the selected bits from `b` to result bits `[127:96]`.

- Bits `[3:0]`: If any of these bits are set, the corresponding result element is cleared.

Intel’s documentation