This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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.


Bernd


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]