------- Comment #17 from ubizjak at gmail dot com 2009-02-12 18:23 ------- (In reply to comment #15) > The DFmode and DImodes are different. Aligning DFmode on stack is very > performance critical, while DImodes on 32bit machine can quite safely be > misaligned (if we ignore their possible use in MMX intrincisc).
I would just point out that on 32bit targets we use XMM registers in conversion from long long and unsigned int to FP value. I have found, that when DImode value is stored from intermediate XMM register to memory and then read from this location via fildll, it is very important that DImode memory is aligned to its natural boundary (8 bytes). Misaligned DImode memory probably defeats store forwarding - we are talking about 5-6 _times_ longer execution times on short loops (please grep for "store forwarding" in i386.md for comments on this matter). I think that due to this performance hit, DImode locations should remain to be aligned on 32bit targets, see PR 13958. -- ubizjak at gmail dot com changed: What |Removed |Added ---------------------------------------------------------------------------- BugsThisDependsOn| |13958 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39137