ATM, this doesn't work:
// Model1.td
let SchedModel = Model1 in {
def Model1ReadMAC64Lo : SchedReadVariant<...>;
def : SchedAlias<ReadMac64Lo, Model1ReadMAC64Lo>;
}// Model2.td
let SchedModel = Model2 in {
def Model2WriteMAC64Lo : SchedWriteVariant<...>;
def : SchedAlias<WriteMac64Lo, Model2WriteMAC64Lo>;
}Trying to compile this will result in TableGen error, because TableGen fails to process case when:
a) Sched class has both read and write variants
b) Read and write variants reside in different processor models
I've changed WriteMAC64Lo in cortex-a57 model in order to test this. According to optimization guide multiply long operations, which set flags, should take 1 cycle longer and have additional integer uop.
These now use L somehow? Am I reading that right?