[PATCH] Hoist reciprocal invariant out of loop
David Edelsohn
dje@watson.ibm.com
Fri Apr 8 02:01:00 GMT 2005
I ran SPEC CPU2000 on powerpc-darwin with four different
combinations: no generation of reciprocal, RTL reciprocal (current
behavior), both Tree-SSA reciprocal (patch) and RTL, and Tree-SSA
reciprocal. The results for the benchmarks that changed are:
no recip rtl-only rtl+tree tree-only
300.twolf -2% 0 0 0
168.wupwise -1% 0 0 0
179.art -1% 0 -0.5% -1%
187.facerec 0 0 +1% 0
189.lucas -1% 0 0 0
200.sixtrack +1% 0 +2% 0
301.apsi -3% 0 0 -0.7%
Based on the degradation without any optimization (except for
200.sixtrack), the mostly similar performance benefit from the Tree-SSA
version, and the previously discussed problems with the current RTL
implementation in expand_expr_real(), I plan to commit the approved patch
shortly. We then can begin discussing the removal of the RTL reciprocal
functionality.
The question of outermost_invariant_loop() versus
outermost_invariant_loop_expr() remains unresolved. I would appreciate
some further explanation of "gimple rhs operands only" versus "arbitrary
expressions".
Thanks, David
More information about the Gcc-patches
mailing list