https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81434

--- Comment #8 from Wilco <wilco at gcc dot gnu.org> ---
(In reply to jim.wilson from comment #7)
> On Thu, Jul 20, 2017 at 4:20 AM, wilco at gcc dot gnu.org
> <gcc-bugzi...@gcc.gnu.org> wrote:
> > Do you think it might be feasible to update resource usage of a schedule 
> > group?
> > Or would it be easier to replace a fused pair with a single instruction with
> > correct resource usage, and expand after scheduling in say split5?
> >
> > For some cases (single destination reg like ADRP/ADD, AES, MOV/MOVK) it 
> > would
> > be simpler to treat them as a single instruction from early on.
> 
> I haven't looked at this issue yet.  This problem wastes one issue
> slot per cycle, where as the SCHED_GROUP problem wastes up to N-1
> issue slots per cycle, where N is the issue rate.  For falkor, this is
> up to 3 issue slots per cycle.  Since the SCHED_GROUP problem is more
> serious, I looked at that one first.
> 
> Thinking about this a bit, I don't know if there is an easy way to
> correct resource usage for a fused pair if represented as two insns.
> If we represent a fused pair as a single instruction, then we are
> getting the issue count wrong, as they take two issue slots, but one
> function unit slot.  However, there is a way to deal with the issue
> count.  We could use TARGET_SCHED_VARIABLE_ISSUE to make the single
> fused insn take two issue slots.  I already wrote a patch like that
> for a different reason as an experiment so I know this can work.  We
> may also have to worry about instruction lengths, depending on when
> exactly we split the fused insn into two insns.  There could be some
> other details that turn up when we try to implement this.  What do we
> do if a fused insn takes the last issue slot for instance?  Maybe we
> try to prevent that, or maybe we reduce the issue rate by one for the
> next cycle.  This may depend on how the hardware implements insn
> fusing.

Yes the details depend on how the hardware implements fusion, but based on the
tuning I did on Cortex-A53 model I'd say that you get good schedules with a
reasonable approximation. So if it is the last issue slot then it may be best
to force it to the next cycle like you say - that's no worse than if the fusion
didn't happen.

Reply via email to