This is the mail archive of the
mailing list for the GCC project.
Re: Conflicting IRA patches
On 07/13/2010 06:22 PM, Jeff Law wrote:
> I pondered what it might take to have lower-subreg handle those cases --
> basically having lower-subreg work on regions and the ability to emit
> compensation code at region boundaries. Long term that's probably a
> good idea, but I wasn't ready to tackle it at the time.
Yes, there's definitely room to improve this pass.
For the ARM/NEON situation, the goal is to prefer working with 64 bit
NEON instructions if possible, but also to avoid moving NEON regs to
general regs, which is extremely expensive on some machines.
It would be good if we could decide which set of insns to split, and
which set to leave intact. The algorithm I'm thinking of looks
something like this:
for each INSN with DImode inputs regs
if INSN can't handle NEON regs
mark insn as to-split
put INSN in the insn worklist
for each INSN on the insn worklist
for each non-processed DImode REG in INSN
mark REG as processed
for each occurence of of REG in ANOTHER INSN
mark ANOTHER INSN as to-split
put ANOTHER INSN on the insn worklist
Not sure whether this should be in a small target-specific pass to be
run before lower-subreg2, or whether it makes sense to try to teach
target-specific knowledge to lower-subreg.