SHA1RNDS4
执行 SHA1 四轮操作
stableVMJITAOTinstruction
编码
| 操作码 | 指令 | Op/En | 64 位 | 兼容/传统 | 说明 |
|---|---|---|---|---|---|
NP 0F 3A CC /r ib | SHA1RNDS4 xmm1, xmm2/m128, imm8 | RMI | 有效 | 有效 | 从 xmm1 执行 SHA1 运行在 SHA1 状态(A,B,C,D)上的四轮 SHA1 操作,其前置共值为 xmm2/m128 的下4 个回合消息词和状态变量 E. 即时字节控制逻辑函数和回合常数. |
操作数编码
每个模式对应上表 Op/En 列的一个取值,说明各操作数按书写顺序分别编码在指令的哪个字段,以及指令对它是读、是写还是两者兼有。
RMI
modrm.reglectura y escrituraModRM 字节的 reg 字段(第 5-3 位)modrm.rmlecturaModRM 字节的 r/m 字段(第 2-0 位);当 mod 字段要求时,还包括 SIB 字节和位移imm8指令后的立即数字节
实测开销
正在从 arch-data 加载实测数据...
说明
SHA1RNDS4指令使用第一个操作数的初始SHA1状态(A,B,C,D)进行四轮SHA1操作(它是一个源操作数和目标操作数),并预算下4个圆电文双字的和数,以及第二个操作数(a 源操作数)的变数E. 经过四轮处理后更新的SHA1状态(A,B,C,D)被存储在目标操作数中.
行动
SHA1RNDS4
The function f() and Constant K are dependent on the value of the immediate.
IF ( imm8[1:0] = 0 )
THEN f() := f0(), K := K0;
ELSE IF ( imm8[1:0] = 1 )
THEN f() := f1(), K := K1;
ELSE IF ( imm8[1:0] = 2 )
THEN f() := f2(), K := K2;
ELSE IF ( imm8[1:0] = 3 )
THEN f() := f3(), K := K3;
FI;
A := SRC1[127:96];
B := SRC1[95:64];
C := SRC1[63:32];
D := SRC1[31:0];
W0E := SRC2[127:96];
W1 := SRC2[95:64];
W2 := SRC2[63:32];
W3 := SRC2[31:0];
Round i = 0 operation:
A_1 := f (B, C, D) + (A ROL 5) +W0E +K;
B_1 := A;
C_1 := B ROL 30;
D_1 := C;
E_1 := D;
FOR i = 1 to 3
A_(i +1) := f (B_i, C_i, D_i) + (A_i ROL 5) +Wi+ E_i +K;
B_(i +1) := A_i;
C_(i +1) := B_i ROL 30;
D_(i +1) := C_i;
E_(i +1) := D_i;
ENDFOR
DEST[127:96] := A_4;
DEST[95:64] := B_4;
DEST[63:32] := C_4;
DEST[31:0] := D_4;Intel C/C++ 内在编译器
SHA1RNDS4 __m128i _mm_sha1rnds4_epu32(__m128i, __m128i, const int);受影响的旗帜
None.
SIMD 浮点 例外
None.
其他例外
参见表2-21"第4类例外条件".