Lines Matching refs:ID
38 static void initializeUsedResources(InstrDesc &ID, in initializeUsedResources() argument
96 ID.MustIssueImmediately = AllInOrderResources && AnyDispatchHazards; in initializeUsedResources()
127 ID.Resources.emplace_back(A); in initializeUsedResources()
160 ID.ImplicitlyUsedProcResUnits |= ImpliedUsesOfResourceUnits; in initializeUsedResources()
198 for (ResourcePlusCycles &RPC : ID.Resources) { in initializeUsedResources()
223 ID.UsedBuffers = Buffers.getZExtValue(); in initializeUsedResources()
224 ID.UsedProcResUnits = UsedResourceUnits; in initializeUsedResources()
225 ID.UsedProcResGroups = UsedResourceGroups; in initializeUsedResources()
228 for (const std::pair<uint64_t, ResourceUsage> &R : ID.Resources) in initializeUsedResources()
233 uint64_t BufferIDs = ID.UsedBuffers; in initializeUsedResources()
239 dbgs() << "\t\t Used Units=" << format_hex(ID.UsedProcResUnits, 16) << '\n'; in initializeUsedResources()
241 << format_hex(ID.ImplicitlyUsedProcResUnits, 16) << '\n'; in initializeUsedResources()
242 dbgs() << "\t\tUsed Groups=" << format_hex(ID.UsedProcResGroups, 16) in initializeUsedResources()
247 static void computeMaxLatency(InstrDesc &ID, const MCInstrDesc &MCDesc, in computeMaxLatency() argument
253 ID.MaxLatency = 100U; in computeMaxLatency()
259 ID.MaxLatency = Latency < 0 ? 100U : static_cast<unsigned>(Latency); in computeMaxLatency()
291 void InstrBuilder::populateWrites(InstrDesc &ID, const MCInst &MCI, in populateWrites() argument
348 ID.Writes.resize(TotalDefs + NumVariadicOps); in populateWrites()
365 WriteDescriptor &Write = ID.Writes[CurrentDef]; in populateWrites()
372 WLE.Cycles < 0 ? ID.MaxLatency : static_cast<unsigned>(WLE.Cycles); in populateWrites()
376 Write.Latency = ID.MaxLatency; in populateWrites()
392 WriteDescriptor &Write = ID.Writes[Index]; in populateWrites()
400 WLE.Cycles < 0 ? ID.MaxLatency : static_cast<unsigned>(WLE.Cycles); in populateWrites()
404 Write.Latency = ID.MaxLatency; in populateWrites()
419 WriteDescriptor &Write = ID.Writes[NumExplicitDefs + NumImplicitDefs]; in populateWrites()
422 Write.Latency = ID.MaxLatency; in populateWrites()
443 WriteDescriptor &Write = ID.Writes[CurrentDef]; in populateWrites()
446 Write.Latency = ID.MaxLatency; in populateWrites()
457 ID.Writes.resize(CurrentDef); in populateWrites()
460 void InstrBuilder::populateReads(InstrDesc &ID, const MCInst &MCI, in populateReads() argument
470 ID.Reads.resize(TotalUses); in populateReads()
478 ReadDescriptor &Read = ID.Reads[CurrentUse]; in populateReads()
490 ReadDescriptor &Read = ID.Reads[CurrentUse + I]; in populateReads()
509 ReadDescriptor &Read = ID.Reads[CurrentUse]; in populateReads()
518 ID.Reads.resize(CurrentUse); in populateReads()
521 Error InstrBuilder::verifyInstrDesc(const InstrDesc &ID, in verifyInstrDesc() argument
523 if (ID.NumMicroOps != 0) in verifyInstrDesc()
526 bool UsesBuffers = ID.UsedBuffers; in verifyInstrDesc()
527 bool UsesResources = !ID.Resources.empty(); in verifyInstrDesc()
577 std::unique_ptr<InstrDesc> ID = std::make_unique<InstrDesc>(); in createInstrDescImpl() local
578 ID->NumMicroOps = SCDesc.NumMicroOps; in createInstrDescImpl()
579 ID->SchedClassID = SchedClassID; in createInstrDescImpl()
596 ID->MayLoad = MCDesc.mayLoad(); in createInstrDescImpl()
597 ID->MayStore = MCDesc.mayStore(); in createInstrDescImpl()
598 ID->HasSideEffects = MCDesc.hasUnmodeledSideEffects(); in createInstrDescImpl()
599 ID->BeginGroup = SCDesc.BeginGroup; in createInstrDescImpl()
600 ID->EndGroup = SCDesc.EndGroup; in createInstrDescImpl()
601 ID->RetireOOO = SCDesc.RetireOOO; in createInstrDescImpl()
603 initializeUsedResources(*ID, SCDesc, STI, ProcResourceMasks); in createInstrDescImpl()
604 computeMaxLatency(*ID, MCDesc, SCDesc, STI); in createInstrDescImpl()
609 populateWrites(*ID, MCI, SchedClassID); in createInstrDescImpl()
610 populateReads(*ID, MCI, SchedClassID); in createInstrDescImpl()
612 LLVM_DEBUG(dbgs() << "\t\tMaxLatency=" << ID->MaxLatency << '\n'); in createInstrDescImpl()
613 LLVM_DEBUG(dbgs() << "\t\tNumMicroOps=" << ID->NumMicroOps << '\n'); in createInstrDescImpl()
616 if (Error Err = verifyInstrDesc(*ID, MCI)) in createInstrDescImpl()
622 Descriptors[MCI.getOpcode()] = std::move(ID); in createInstrDescImpl()
626 VariantDescriptors[&MCI] = std::move(ID); in createInstrDescImpl()