LLVM: lib/MCA/Stages/InstructionTables.cpp Source File (original) (raw)

24 UsedResources.clear();

25

26

27 for (const std::pair<uint64_t, ResourceUsage> &Resource :

28 Desc.Resources) {

29

30 if (!Resource.second.size())

31 continue;

32 unsigned Cycles = Resource.second.size();

33 unsigned Index = std::distance(Masks.begin(), find(Masks, Resource.first));

35 unsigned NumUnits = ProcResource.NumUnits;

37

38 for (unsigned I = 0, E = NumUnits; I < E; ++I) {

39 ResourceRef ResourceUnit = std::make_pair(Index, 1U << I);

40 UsedResources.emplace_back(

41 std::make_pair(ResourceUnit, ReleaseAtCycles(Cycles, NumUnits)));

42 }

43 continue;

44 }

45

46

47

48

49 for (unsigned I1 = 0; I1 < NumUnits; ++I1) {

52

53 for (unsigned I2 = 0, E2 = SubUnit.NumUnits; I2 < E2; ++I2) {

54 ResourceRef ResourceUnit = std::make_pair(SubUnitIdx, 1U << I2);

55 UsedResources.emplace_back(std::make_pair(

56 ResourceUnit,

58 }

59 }

60 }

61

62

66}