https://bugs.kde.org/show_bug.cgi?id=384987
Bug ID: 384987 Summary: VEX register allocator: allocate caller-save registers for short lived vregs Product: valgrind Version: 3.14 SVN Platform: Compiled Sources OS: Linux Status: UNCONFIRMED Severity: normal Priority: NOR Component: vex Assignee: jsew...@acm.org Reporter: iv...@ivosh.net Target Milestone: --- This is a performance improvement based on Peter Bergner's suggestion: Allocate caller-saved registers for short lived vregs and callee-save registers for vregs which span accross helper calls. This idea is quite simple but MOV coalescing went in the way. The first patch enhances MOV coalescing so it keeps better track of what registers form the coalescing chain. The second patch actually changes find_free_rreg(). With just a minor additional complexity, we get more compact generated code. This not only helps for better performance; it should also help with i-cache misses. Measuring instruction count, running inner Memcheck: perf/bz2: vanilla: 45,112,349,784 total; reg alloc 165,978,807; ratio 15.5 (97,397 -> 1,506,163) coalesce only: 45,120,691,777 total; reg alloc 167,035,575; ratio 15.5 (97,610 -> 1,509,396) both patches: 44,943,765,809 total; reg alloc 167,403,237; ratio 15.3 (97,607 -> 1,493,722) /bin/true: vanilla: 3,514,906,884 total; reg alloc 60,779,126 coalesce only: 3,506,029,832 total; reg alloc 61,242,900 both patches: 3,503,495,437 total; reg alloc 61,395,160 -- You are receiving this mail because: You are watching all bug changes.