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?