VSHA512MSG1

Realizar un cálculo intermedio para el siguiente mensaje de cuatro SHA512

estableVMJITAOTinstruccion

Codificaciones

OpcodeInstruccionOp/En64 bitsCompat/LegacyDescripcion
VEX.256.F2.0F38.W0 CC 11:rrr:bbbVSHA512MSG1 ymm1, xmm2AValidoValidoRealiza un cálculo intermedio para el mensaje SHA512 siguiente cuatro SHA512 qwords usando el mensaje anterior qwords de ymm1 y xmm2, almacenando el resultado en ymm1.

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.

A

  1. modrm.reg lectura y escriturabyte ModRM, campo reg (bits 5-3)
  2. modrm.rm lecturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pide

Coste medido

Cargando las mediciones de arch-data...

Descripción

La instrucción VSHA512MSG1 es una de las dos instrucciones de programación del mensaje SHA512. La instrucción realiza un cálculo intermedio para los siguientes cuatro qwords de mensaje SHA512.

See https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf for more information on the SHA512 standard.

Operación

define ROR64(qword, n):

    count := n % 64
    dest := (qword >> count) | (qword << (64-count))
    return dest

define SHR64(qword, n):
    return qword >> n

define s0(qword):
    return ROR64(qword,1) ^ ROR64(qword, 8) ^ SHR64(qword, 7)

VSHA512MSG1 SRCDEST, SRC1
W[4] := SRC1.qword[0]
W[3] := SRCDEST.qword[3]
W[2] := SRCDEST.qword[2]
W[1] := SRCDEST.qword[1]
W[0] := SRCDEST.qword[0]

SRCDEST.qword[3] := W[3] + s0(W[4])
SRCDEST.qword[2] := W[2] + s0(W[3])
SRCDEST.qword[1] := W[1] + s0(W[2])
SRCDEST.qword[0] := W[0] + s0(W[1])

Banderas afectadas

None.

Intel C/C++ compilador intrínseco

VSHA512MSG1 __m256i _mm256_sha512msg1_epi64 (__m256i __A, __m128i __B);

SIMD coma flotante Excepciones

None.

Otras excepciones

Ver Tabla 2-23, "Tipo 6 Condiciones de Excepción de Clase".

Fuentes