sha1c
SHA1 Choose
SHA1C <Qd>, <Sn>, <Vm>.<T>
SHA1 hash update (Choose function).
Details
Performs one round of SHA-1 hash computation using the Choose function. The instruction updates the SHA-1 state in Qd by processing the 32-bit hash value in Sn and 128-bit data from Vm. This is an AArch64-only instruction requiring the Crypto extension. No condition flags are affected.
Pseudocode Operation
T ← SHA1_Choose(Sn)
Qd ← SHA1_Update_C(Qd, T, Vm)
Example
SHA1C q0, s1, v2.4s.T
Encoding
Binary Layout
01011110
00
0
Rm
0
000
00
Rn
Rd
Operands
-
Qd
State -
Sn
Hash -
Vm
Data
Reference (Arm A64 ISA)
Instruction Forms
| Encoding | Instruction | ISA | Bit pattern | ||
|---|---|---|---|---|---|
| 0x5E000000 | SHA1C <Qd>, <Sn>, <Vm>.4S | A64 | 01011110 | 00 | 0 | Rm | 0 | 000 | 00 | Rn | Rd |
Description
SHA1 hash update (choose).
Operation
AArch64.CheckFPAdvSIMDEnabled();
bits(128) x = V[d, 128];
bits(32) y = V[n, 32]; // Note: 32 not 128 bits wide
bits(128) w = V[m, 128];
bits(32) t;
for e = 0 to 3
t = SHAchoose(x<63:32>, x<95:64>, x<127:96>);
y = y + ROL(x<31:0>, 5) + t + Elem[w, e, 32];
x<63:32> = ROL(x<63:32>, 30);
<y, x> = ROL(y:x, 32);
V[d, 128] = x;