[LLVMdev] Representing 2 FUs mapped to same slot in Tablegen

Pankaj Gode godepankaj at yahoo.com
Thu Jul 10 06:14:51 PDT 2014


Hi All,

I have a query regarding, how should one represent mapping of functional units to same slot in Tablegen ?

For example, if my Functional units are defined in TargetSchedule.td, as:

def fu0 : FuncUnit;
def fu1 : FuncUnit;

def f_fu0 : FuncUnit;

def f_fu1 : FuncUnit;


def myprocItineraries:
  ProcessorItineraries<[fu0, fu1, f_fu0, f_fu1], [], [
    ... 

      ]>;  


def myProcModel : SchedMachineModel {
  let IssueWidth = 2;
...
}


I could not find a way to represent that, in 'Issue Slot 0', I want to use either 'fu0 or f_fu0', while scheduling.
I would need this when, for example I want to use f_fu0 for some operation in slot0, instead of fu0. 

I understand that ProcessorItineraries<[fu0, fu1, f_fu0, f_fu1] ... 
allows me to specify that instruction scheduled in issue slot 0 will be executed on fu0 and instruction to execute on f_fu0 can be scheduled in slot 2 only. 
While scheduling an operation, I would be using InstructionItineraries to check whether the operation can be executed on which FuncUnit,
but I would need extra logic to maintain that operation executing on 'fu0 or f_fu0' can be scheduled in slot 0.

Thus, specifying the processor itineraries as above will be a wrong representation my this case.
Or, should I be specifying this information somewhere 
Or, it is fine to take care of this while scheduling ?

Please correct me if I have wrong understanding.


Regards,
Pankaj
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140710/adbf2966/attachment.html>


More information about the llvm-dev mailing list