Hi Martin,

On 2019/6/18 18:21, Martin Liška wrote:
On 6/18/19 3:45 AM, Xiong Hu Luo wrote:
     6.2.  SPEC2017 peakrate:
         523.xalancbmk_r (+4.87%); 538.imagick_r (+4.59%); 511.povray_r 
(+13.33%);
         525.x264_r (-5.29%).

Can you please elaborate what are the key indirect call promotions that are 
needed
to achieve such a significant speed up? Are we talking about calls to virtual 
functions
or C-style indirect calls?

For benchmark 511.povray_r, no speculations and indirect call promotion
happened from povray_r.wpa.069i.profile_estimate:

    994 171 indirect calls trained.
    995 0 (0.00%) have common target.
    996 0 (0.00%) targets was not found.
    997 0 (0.00%) targets had parameter count mismatch.
    998 0 (0.00%) targets was not in polymorphic call target list.
    999 0 (0.00%) speculations seems useless.
   1000 0 (0.00%) speculations produced.


After applying my patch:

   1259 171 indirect calls trained.
   1260 60 (35.09%) have common target.
   1261 41 (23.98%) targets was not found.
   1262 0 (0.00%) targets had parameter count mismatch.
   1263 0 (0.00%) targets was not in polymorphic call target list.
   1264 57 (33.33%) speculations seems useless.
   1265 5 (2.92%) speculations produced.

Below indirect calls conversion will take effect, as all of these calls
are hot functions, performance boosts a lot by the combination optimization
of later stage ipa/inline/clone.

ls *.*i.* | xargs grep "Expanding speculative call" povray_r.ltrans5.076i.inline:Expanding speculative call of create_ray.constprop/75445 -> Inside_CSG_Intersection/76219 count: 291083 (adjusted) povray_r.ltrans5.076i.inline:Expanding speculative call of create_ray.constprop/75445 -> Inside_Plane/76221 count: 387811 (adjusted) povray_r.ltrans5.076i.inline:Expanding speculative call of initialize_ray_container_state_tree/54575 -> Inside_CSG_Intersection/75997 count: 3784081 (adjusted) povray_r.ltrans5.076i.inline:Expanding speculative call of initialize_ray_container_state_tree/54575 -> Inside_Plane/76062 count: 5041557 (adjusted) povray_r.ltrans5.076i.inline:Expanding speculative call of Trace/54564 -> All_CSG_Intersect_Intersections/76183 count: 8983544 (adjusted) povray_r.ltrans5.076i.inline:Expanding speculative call of Trace/54564 -> All_Sphere_Intersections/76184 count: 31488162 (adjusted) povray_r.ltrans5.076i.inline:Expanding speculative call of Trace/54564 -> Inside_Plane/76197 count: 19044626 (adjusted) povray_r.ltrans5.076i.inline:Expanding speculative call of All_CSG_Intersect_Intersections/9843 -> All_Sphere_Intersections/76011 count: 22068935 (adjusted) povray_r.ltrans5.076i.inline:Expanding speculative call of All_CSG_Intersect_Intersections/9843 -> Inside_Plane/76031 count: 13347702 (adjusted) povray_r.ltrans6.076i.inline:Expanding speculative call of block_light_source/26304 -> All_CSG_Intersect_Intersections/76130 count: 5434215 (adjusted) povray_r.ltrans6.076i.inline:Expanding speculative call of block_light_source/26304 -> All_Sphere_Intersections/76139 count: 19047432 (adjusted) povray_r.ltrans6.076i.inline:Expanding speculative call of block_light_source/26304 -> Inside_Plane/76134 count: 11520241 (adjusted) povray_r.ltrans6.076i.inline:Expanding speculative call of Inside_CSG_Union/9845 -> Inside_Plane/76081 count: 830538 (adjusted) povray_r.ltrans6.076i.inline:Expanding speculative call of All_CSG_Union_Intersections/9842 -> All_Plane_Intersections/76049 count: 1636158 (adjusted)


Thanks,
Martin


Reply via email to