[llvm-commits] [patch] Mostly mechanical removal of getPhysicalRegisterRegClass.patch

Rafael Espindola espindola at google.com
Tue Jun 29 08:46:19 PDT 2010


> I don't like the sound of this proposal very much.  I know the Cortex-A8 microarchitecture imposes a significantly penalty for moving between NEON and VFP, and maybe the A9 does as well (I forget), but that is just a bad design.  There's nothing in the ARM architecture that encourages those pipelines to be separated as they are in those particular implementations, and we should not design our compiler around that.  Hopefully someday ARM will fix the problem, and at that point, we don't want to be stuck with two sets of equivalent registers.

I would say that a compiler has to live with the architectures it is given...

> I missed the IRC discussion.  Could you explain how you came to this conclusion and what other options you considered?

Skipping some misunderstandings, It went more or less like this

*) I noted that since DPR_VFP2 is a subcass of DPR, we can use it
anywhere that DPR is OK. In particular, the question of "a regclass
for D0" can be answered with both DPR and DPR_VFP2. DPR_VFP2 is
smaller, and can allow copyRegToReg to produce more specialized code.

*) Anton noted that we only want to use DPR_VFP2 for NEON to avoid
copies from VFP to NEON.

*) From that, we have to know when we ask for a regclass for d0 if we
want to use it with NEON or VFP.

*) Anton proposed making the NEON and VFP regclasses independent. A
agreed that it was a good idea.

So I guess we didn't consider other options, since I agreed with his
first suggestion.

Cheers,
-- 
Rafael Ávila de Espíndola




More information about the llvm-commits mailing list