This patch adds the ability to describe properties of the hardware retire control unit.
Tablegen class RetireControlUnit has been added for this purpose (see TargetSchedule.td).
A RetireControlUnit specifies the size of the reorder buffer, as well as the maximum number of opcodes that can be retired every cycle.
A zero (or negative) value for the reorder buffer size means: "the size is unknown". If the size is unknown, then llvm-mca defaults it to the value of field SchedMachineModel::MicroOpBufferSize.
A zero or negative number of opcodes retired per cycle means: "there is no restriction on the number of instructions that can be retired every cycle".
Models can optionally specify an instance of RetireControlUnit. There can only be up-to one RetireControlUnit definition per scheduling model.
Information related to the RCU (RetireControlUnit) is stored in (two new fields of) MCExtraProcessorInfo.
llvm-mca loads that information when it initializes the DispatchUnit / RetireControlUnit (see Dispatch.h/Dispatch.cpp).
This patch fixes PR36661.
Please let me know if okay to commit
-Andrea
Looks like this broke the build:
http://green.lab.llvm.org/green//job/clang-stage1-cmake-RA-incremental/47722/consoleFull#-172429723349ba4694-19c4-4d7e-bec5-911270d8a58c
P8077