[PATCH] D98976: [CodeGen] Use ProcResGroup information in SchedBoundary

David Penry via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 14 17:26:47 PDT 2021


dpenry added a comment.

I have added a test case which might clarify how the scheduling improves with the scheduler changes; the t2ADDrr is able to dual-issue with VADDD, but VLDRS is not.

But more fundamentally, I am not sure that I'm understanding the semantics of ProcResGroup in the same way, so I'll just ask a few questions...

Assume:

  let BufferSize = 0 in {
     def X : ProcResource<1>;
     def Y : ProcResource<1>; 
     def A : ProcResGroup<[X, Y]>;
  }
  
  def MyWideWrite : SchedWriteRes<[X,Y]> {
    let ResourceCycles = [1, 1];
  }
  
  def MyNarrowWrite: SchedWriteRes[A]> {
    let ResourceCycles = [1];
  }



1. How many instances of A does the scheduling model intend to say that there are: one or two?
2. How many instances of A is MyWideWrite intended to consume?
3. How many instances of A is MyNarrowWrite intended to consume?
4. The goal is to be able to allow two instructions which use MyNarrowWrite to issue together, but to prevent a pair of instructions, one using MyNarrowWrite and the other using MyWideWrite, from dispatching/issuing together.  Is this the right way to represent that restriction?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D98976/new/

https://reviews.llvm.org/D98976



More information about the llvm-commits mailing list