Hi all, It is known that LEA splitting is one of the most critical problems for Atom processors and changes try to improve it through: 1. More aggressive Lea splitting – do not perform splitting if only split cost exceeds AGU stall . 2. Reordering splitting instructions to get better scheduling – use the farthest defined register for SET instruction, then add constant offset if any and finally generate add instruction.This gives +0.5% speedup in geomean for eembc2.0 suite on Atom. All required testing was done – bootstraps for Atom & Core2, make check. Note that this fix affects only on Atom processors.
ChangeLog: 2012-08-08 Yuri Rumyantsev yuri.s.rumyant...@intel.com * config/i386/i386-protos.h (ix86_split_lea_for_addr) : Add additional argument. * config/i386/i386.md (ix86_splitt_lea_for_addr) : Add additional argument curr_insn. * config/i386/i386.c (find_nearest_reg-def): New function. Find nearest register definition used in address. (ix86_split_lea_for_addr) : Do more aggressive lea splitting and instructions reodering to get opportunities for better scheduling. Is it OK for trunk?
lea_improvements.diff
Description: Binary data