Failure to move invariant WL out of FOR loop kills ipbb performance
Extended Description
Created an attachment (id=551)
Shorter source code to reproduce fault
I've been chasing a problem with the performance of a Boolean-Boolean
inner product code, apex/ipbb/ipbb.sac.
Although I think there are some problems with my extrema code in
this area, due to differences in performance in the current system,
the attached shorter example has the interesting property that
the compiler does not appear to be moving a loop-invariant Wl out of a
FOR-loop.
I say this because, if I move the loop out by hand, everything
runs bags faster in both the extrema and non-extrema world.
I am off to bed, so have not looked into this yet...
This all with Build #16193.
With xrow inside FOR-loop:
sac2c -O3:
ipbb5.slow.sac.exe.O3.papiex.rattler.28893:PAPI_TOT_INS: 99065594
sac2c -O3 -extrema -nowlf -doswlf:
ipbb5.slow.sac.exe.swlf.papiex.rattler.28928:PAPI_TOT_INS: 1003065073
With xow outside FOR-loop:
sac2c -O3:
ipbb5.slow.sac.exe.O3.papiex.rattler.28998:PAPI_TOT_INS: 765065354
sac2c -O3 -extrema -nowlf -doswlf:
ipbb5.slow.sac.exe.swlf.papiex.rattler.28970:PAPI_TOT_INS: 765065175