`pub fn sm3p1(x: u32) -> u32`

🔬This is a nightly-only experimental API. (

`stdsimd`

#48556)Available on

**RISC-V RV64 and target feature**only.`zksh`

## Expand description

`P1`

transformation function as is used in the SM3 hash algorithm

This function is included in `Zksh`

extension. It’s defined as:

```
P1(X) = X ⊕ (X ≪ 15) ⊕ (X ≪ 23)
```

where `⊕`

represents 32-bit xor, and `≪ k`

represents rotate left by `k`

bits.

In the SM3 algorithm, the `P1`

transformation is used to expand message,
where expanded word `Wj`

can be generated from the previous words.
The whole process can be described as the following pseudocode:

```
FOR j=16 TO 67
Wj ← P1(Wj−16 ⊕ Wj−9 ⊕ (Wj−3 ≪ 15)) ⊕ (Wj−13 ≪ 7) ⊕ Wj−6
ENDFOR
```

According to RISC-V Cryptography Extensions, Volume I, the execution latency of this instruction must always be independent from the data it operates on.