[Tblgen][MCA] Add the ability to mark groups as LoadQueue and StoreQueue. NFCI
Before this patch, users were not allowed to optionally mark processor resource groups as load/store queues. That is because tablegen class MemoryQueue was originally declared as expecting a ProcResource template argument (instead of a more generic ProcResourceKind). That was an oversight, since the original intention from D54957 was to let user mark any processor resource as either load/store queue. This patch adds the ability to use processor resource groups in MemoryQueue definitions. This is not a user visible change. Differential Revision: https://reviews.llvm.org/D66810 llvm-svn: 370091
This commit is contained in:
parent
2d247359cc
commit
2f51a43f8c
|
@ -563,10 +563,10 @@ class RetireControlUnit<int bufferSize, int retirePerCycle> {
|
|||
|
||||
// Base class for Load/StoreQueue. It is used to identify processor resources
|
||||
// which describe load/store queues in the LS unit.
|
||||
class MemoryQueue<ProcResource PR> {
|
||||
ProcResource QueueDescriptor = PR;
|
||||
class MemoryQueue<ProcResourceKind PR> {
|
||||
ProcResourceKind QueueDescriptor = PR;
|
||||
SchedMachineModel SchedModel = ?;
|
||||
}
|
||||
|
||||
class LoadQueue<ProcResource LDQueue> : MemoryQueue<LDQueue>;
|
||||
class StoreQueue<ProcResource STQueue> : MemoryQueue<STQueue>;
|
||||
class LoadQueue<ProcResourceKind LDQueue> : MemoryQueue<LDQueue>;
|
||||
class StoreQueue<ProcResourceKind STQueue> : MemoryQueue<STQueue>;
|
||||
|
|
|
@ -29,12 +29,12 @@ LSUnitBase::LSUnitBase(const MCSchedModel &SM, unsigned LQ, unsigned SQ,
|
|||
const MCExtraProcessorInfo &EPI = SM.getExtraProcessorInfo();
|
||||
if (!LQSize && EPI.LoadQueueID) {
|
||||
const MCProcResourceDesc &LdQDesc = *SM.getProcResource(EPI.LoadQueueID);
|
||||
LQSize = LdQDesc.BufferSize;
|
||||
LQSize = std::max(0, LdQDesc.BufferSize);
|
||||
}
|
||||
|
||||
if (!SQSize && EPI.StoreQueueID) {
|
||||
const MCProcResourceDesc &StQDesc = *SM.getProcResource(EPI.StoreQueueID);
|
||||
SQSize = StQDesc.BufferSize;
|
||||
SQSize = std::max(0, StQDesc.BufferSize);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue