[LLVMdev] PBQP & register pairing
Arnaud Allard de Grandmaison
Arnaud.AllardDeGrandMaison at dibcom.com
Mon Jun 6 07:07:10 PDT 2011
Hi All,
My target has some instructions requiring register pairs. I decided to give a try to the PBQP allocator : it is working fine in 99% of the cases, but I am stumbling on the following issue.
Instruction 'MPQD' takes 3 register operands inputs, with the constraint that operands 0 and 2 must be consecutive registers. Operand 1 has no particular constraint. It has no output register. So we have something like MPQD R_n, R_x, R_n+1.
I have derived from PBQPBuilder to add the MPQD constraint.
It happens sometimes that the code for register allocation looks like this :
...
MPQD %vreg80, %vreg79, %vreg80; GR16:%vreg80,%vreg79
...
Operands 0 & 2 have been coalesced and I can no longer set the constraint.
I tried to add a pass right before register allocation, to catch those case and insert a copy for operand 2, but the copy gets coalesced away.
What would be the appropriate way to handle this case ?
Thanks,
--
Arnaud de Grandmaison
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110606/9b2fcea9/attachment.html>
More information about the llvm-dev
mailing list