Modos de micro fusão e endereçamento
Encontrei algo inesperado (para mim) usando oAnalisador de código de arquitetura Intel® (IACA).
A seguinte instrução usando[base+index]
endereçamento
addps xmm1, xmmword ptr [rsi+rax*1]
não micro-fusível de acordo com a IACA. No entanto, se eu usar[base+offset]
como isso
addps xmm1, xmmword ptr [rsi]
A IACA relata que se funde.
Seção 2-11 doManual de referência de otimização da Intel fornece o seguinte como exemplo "de micro-operações micro-fundidas que podem ser manipuladas por todos os decodificadores"
FADD DOUBLE PTR [RDI + RSI*8]
eManual de montagem de otimização do Agner Fog também fornece exemplos de fusão micro-op usando[base+index]
endereçamento. Veja, por exemplo, a Seção 12.2 "Mesmo exemplo no Core2". Então, qual é a resposta correta?