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:

sintaxis de Intel: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

Respuestas a la pregunta(2)

Su respuesta a la pregunta