Instrucción de FMA _mm256_fmadd_pd (): “132”, “231” y “213”?
¿Podría alguien explicarme por qué hay 3 variantes de la instrucción fusionada de acumulación múltiple:vfmadd132pd
, vfmadd231pd
yvfmadd213pd
, aunque solo hay una C intrínseca_mm256_fmadd_pd
?
Para simplificar las cosas, ¿cuál es la diferencia entre (en la sintaxis de AT&T)
vfmadd132pd %ymm0, %ymm1, %ymm2
vfmadd231pd %ymm0, %ymm1, %ymm2
vfmadd213pd %ymm0, %ymm1, %ymm2
No tengo idea deGuía intrínseca de Intel. Pregunto porque los veo a todos en la salida del ensamblador de un fragmento de código C que escribí. Gracias.
Una respuesta limpia (formateando las respuestas a continuación)
Por varianteijk
, el significado devfmaddijkpd
:
op(i) * op(j) + op(k) -> op(1)
Sintaxis de AT&T:op(4-i) * op(4-j) + op(4-k) -> op(3)
dóndeop(n)
denota el enésimo operando después de la instrucción. Entonces hay unmarcha atrás transformarse entre los dos:
n <- 4 - n