_mm_sm3rnds2_epi32 in core::arch::x86_64 - Rust
Description: The intrinsic performs two rounds of SM3 operation using initial SM3 state `(C, D, G, H)` from `a`, an initial SM3 states `(A, B, E, F)` from `b` and a pre-computed words from the `c`. `a` with initial SM3 state of `(C, D, G, H)` assumes input of non-rotated left variables from previous state. The updated SM3 state `(A, B, E, F)` is written to `a`. The `imm8` should contain the even round number for the first of the two rounds computed by this instruction. The computation masks the `imm8` value by ANDing it with `0x3E` so that only even round numbers from 0 through 62 are used for this operation. The calculated results are stored in dst.

Skip to main content

## _mm_sm3rnds2_epi32

# Function _mm_sm3rnds2_epi32

1.89.0 · Source

    pub fn _mm_sm3rnds2_epi32(
        a: __m128i,
        b: __m128i,
        c: __m128i,
        const IMM8: i32,
    ) -> __m128i

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

The intrinsic performs two rounds of SM3 operation using initial SM3 state `(C, D, G, H)` from `a`, an initial SM3 states `(A, B, E, F)` from `b` and a pre-computed words from the `c`. `a` with initial SM3 state of `(C, D, G, H)` assumes input of non-rotated left variables from previous state. The updated SM3 state `(A, B, E, F)` is written to `a`. The `imm8` should contain the even round number for the first of the two rounds computed by this instruction. The computation masks the `imm8` value by ANDing it with `0x3E` so that only even round numbers from 0 through 62 are used for this operation. The calculated results are stored in dst.

Intel’s documentation