From d963ab1f58adb6daa028533ff3285841d7e45f80 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 6 Apr 2008 17:38:14 +0000 Subject: Fix generation of multi-stage instruction itineraries. Patch by giuma.cordes@gmail.com git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49276 91177308-0d34-0410-b5e6-96231b3b80d8 --- utils/TableGen/SubtargetEmitter.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'utils/TableGen/SubtargetEmitter.cpp') diff --git a/utils/TableGen/SubtargetEmitter.cpp b/utils/TableGen/SubtargetEmitter.cpp index a0dc96787d..1f833efcaa 100644 --- a/utils/TableGen/SubtargetEmitter.cpp +++ b/utils/TableGen/SubtargetEmitter.cpp @@ -272,6 +272,7 @@ void SubtargetEmitter::EmitStageData(std::ostream &OS, OS << "static const llvm::InstrStage Stages[] = {\n" " { 0, 0 }, // No itinerary\n"; + unsigned StageCount = 1; unsigned ItinEnum = 1; std::map ItinMap; for (unsigned i = 0, N = ProcItinList.size(); i < N; i++) { @@ -308,8 +309,10 @@ void SubtargetEmitter::EmitStageData(std::ostream &OS, if (Find == 0) { // Emit as { cycles, u1 | u2 | ... | un }, // index OS << ItinString << ", // " << ItinEnum << "\n"; - // Record Itin class number - ItinMap[ItinString] = Find = ItinEnum++; + // Record Itin class number. + ItinMap[ItinString] = Find = StageCount; + StageCount += NStages; + ItinEnum++; } // Set up itinerary as location and location + stage count -- cgit v1.2.3