Hi Steven,
Nice to hear from you.
On 23 July 2012 19:25, Steven Bosscher stevenb.gcc@gmail.com wrote:
Hello Ramana,
For your PGO list:
- please note that I've been working on PGO for switch code, and also
for chains of if-statements with a common condition variable (with Tom de Vries)
Yes, that's what I alluded to in the call yesterday morning.
- turning conditional execution off will not make a difference, your
profile information will be exactly the same. Profile instrumentation happens very early in the pipe line (on purpose, PGO is more accurately "coverage guided optimization", not profiling in the prof/gprof/oprofile sense). And the parts of the CFG that have profile instrumentation cannot be if-converted anyway.
Indeed that's true of the generic if-conversion pass but in ARM state in the ARM backend we have this bit of infrastructure that goes around and looks for conditionalization oppurtunities. I'm not sure how that plays with profile-generation. My guess it shouldn't harm in this case, but there have been a number of times when I've looked at code generated with profile-generation and noticed conditional execution on ARM. That logic won't apply for Thumb2.
- you can use the script "analyze_brprob" in contrib/ to measure the
accuracy of the branch predictors. The script needs some TLC, fixing it is on my TODO list but let me know if linaro folks are going to take care of that. You'll find that the predictors are heavily tuned towards the original Opteron, I'm not aware of much tuning for other architectures.
We've not yet tuned the predictors for the variety of the micro-architectures on ARM. That's not been on our TODO list .
- The heuristics for profile-guided optimizations are also not tuned
for arm. In the past we found that some params have more influence than others (the TRACER* parameters for example).
Ok good to know.
What do you mean with "Only conditionalise those parts that benefit"?
Hmm I can't remember now. I'll have to dig up some notes to see what this was .
Ciao! Steven