SHA1RNDS4
Realizar cuatro rondas de operación SHA1
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
NP 0F 3A CC /r ib | SHA1RNDS4 xmm1, xmm2/m128, imm8 | RMI | Valido | Valido | Realiza cuatro rondas de operación SHA1 que operan en el estado SHA1 (A,B,C,D) de xmm1, con una suma pre-computada de los próximos 4 dwords de mensajes redondos y la variable estatal E de xmm2/m128. El byte inmediato controla las funciones lógicas y las constantes redondas. |
Codificacion de operandos
Cada modo es un valor de la columna Op/En de arriba. Dice en que campo de la instruccion codificada va cada operando, en el orden en que se escriben, y si la instruccion lo lee, lo escribe o ambas cosas.
RMI
modrm.reglectura y escriturabyte ModRM, campo reg (bits 5-3)modrm.rmlecturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pideimm8byte inmediato que sigue a la instruccion
Coste medido
Cargando las mediciones de arch-data...
Descripción
La instrucción SHA1RNDS4 realiza cuatro rondas de operación SHA1 utilizando un estado SHA1 inicial (A,B,C,D) del primer operado (que es un operado fuente y el operado de destino) y una cierta suma pre-computada de los próximos 4 dwords de mensajes redondos, y la variable estatal E del segundo operand (un operado fuente). El estado SHA1 actualizado (A,B,C,D) después de cuatro rondas de procesamiento se almacena en el operando de destino.
Operación
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++ compilador intrínseco
SHA1RNDS4 __m128i _mm_sha1rnds4_epu32(__m128i, __m128i, const int);Banderas afectadas
None.
SIMD coma flotante Excepciones
None.
Otras excepciones
Ver Tabla 2-21, "Tipo 4 Condiciones de Excepción".