diff options
Diffstat (limited to 'llvm/lib/MCA/Support.cpp')
-rw-r--r-- | llvm/lib/MCA/Support.cpp | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/llvm/lib/MCA/Support.cpp b/llvm/lib/MCA/Support.cpp index 3271bc6bf5b..335953e1048 100644 --- a/llvm/lib/MCA/Support.cpp +++ b/llvm/lib/MCA/Support.cpp @@ -19,13 +19,18 @@ namespace llvm { namespace mca { +#define DEBUG_TYPE "llvm-mca" + void computeProcResourceMasks(const MCSchedModel &SM, - SmallVectorImpl<uint64_t> &Masks) { + MutableArrayRef<uint64_t> Masks) { unsigned ProcResourceID = 0; + assert(Masks.size() == SM.getNumProcResourceKinds() && + "Invalid number of elements"); + // Resource at index 0 is the 'InvalidUnit'. Set an invalid mask for it. + Masks[0] = 0; + // Create a unique bitmask for every processor resource unit. - // Skip resource at index 0, since it always references 'InvalidUnit'. - Masks.resize(SM.getNumProcResourceKinds()); for (unsigned I = 1, E = SM.getNumProcResourceKinds(); I < E; ++I) { const MCProcResourceDesc &Desc = *SM.getProcResource(I); if (Desc.SubUnitsIdxBegin) @@ -46,6 +51,16 @@ void computeProcResourceMasks(const MCSchedModel &SM, } ProcResourceID++; } + +#ifndef NDEBUG + LLVM_DEBUG(dbgs() << "\nProcessor resource masks:" + << "\n"); + for (unsigned I = 0, E = SM.getNumProcResourceKinds(); I < E; ++I) { + const MCProcResourceDesc &Desc = *SM.getProcResource(I); + LLVM_DEBUG(dbgs() << '[' << I << "] " << Desc.Name << " - " << Masks[I] + << '\n'); + } +#endif } double computeBlockRThroughput(const MCSchedModel &SM, unsigned DispatchWidth, |