I see that you worked on early if conversion and on the isel instruction generation. I found some hotspot in Graph500 where using isel generates a 10% slowdown compared to the traditional solution using branches (this is for POWER8). It appears that using branches is almost always better than using isel for P7 and P8, because of branch prediction — the decision outcome has to be almost completely random for isel to win. I also noticed that isel has a way higher latency for P8 than for A2.
I was wondering if you actually measured some improvements using isel on P7? Otherwise, we could only use isel for A2 and disable it for the other subtargets. Please tell me what you think.