Micro fusión y modos de direccionamiento
He encontrado algo inesperado (para mí) usando elAnalizador de código de arquitectura Intel® (IACA)
La siguiente instrucción usando[base+index]
direccionamiento
addps xmm1, xmmword ptr [rsi+rax*1]
no se fusiona de acuerdo con IACA. Sin embargo, si uso[base+offset]
Me gusta esto
addps xmm1, xmmword ptr [rsi]
IACA informa que se fusiona.
Sección 2-11 de laManual de referencia de optimización de Intel da lo siguiente como ejemplo "de micro-operaciones micro fusionadas que pueden ser manejadas por todos los decodificadores"
FADD DOUBLE PTR [RDI + RSI*8]
yManual de montaje de optimización de Agner Fog también da ejemplos de fusión micro-op usando[base+index]
direccionamiento. Consulte, por ejemplo, la Sección 12.2 "El mismo ejemplo en Core2". Entonces, ¿cuál es la respuesta correcta?