[llvm-commits] [llvm] r157977 - in /llvm/trunk: include/llvm/CodeGen/ScheduleHazardRecognizer.h lib/CodeGen/ScoreboardHazardRecognizer.cpp

Hal Finkel hfinkel at anl.gov
Tue Dec 3 11:05:13 PST 2013


----- Original Message -----
> From: "Andrew Trick" <atrick at apple.com>
> To: "Hal Finkel" <hfinkel at anl.gov>
> Cc: "llvm commits" <llvm-commits at cs.uiuc.edu>
> Sent: Tuesday, December 3, 2013 12:15:08 PM
> Subject: Re: [llvm-commits] [llvm] r157977 - in /llvm/trunk: include/llvm/CodeGen/ScheduleHazardRecognizer.h
> lib/CodeGen/ScoreboardHazardRecognizer.cpp
> 
> 
> On Dec 3, 2013, at 9:19 AM, Hal Finkel <hfinkel at anl.gov> wrote:
> 
> > ----- Original Message -----
> >> From: "Andrew Trick" <atrick at apple.com>
> >> To: llvm-commits at cs.uiuc.edu
> >> Sent: Monday, June 4, 2012 10:44:32 PM
> >> Subject: [llvm-commits] [llvm] r157977 - in /llvm/trunk:
> >> include/llvm/CodeGen/ScheduleHazardRecognizer.h
> >> lib/CodeGen/ScoreboardHazardRecognizer.cpp
> >> 
> >> Author: atrick
> >> Date: Mon Jun  4 22:44:32 2012
> >> New Revision: 157977
> >> 
> >> URL: http://llvm.org/viewvc/llvm-project?rev=157977&view=rev
> >> Log:
> >> misched: Allow disabling scoreboard hazard checking for subtargets
> >> with a
> >> valid itinerary but no pipeline stages.
> >> 
> >> An itinerary can contain useful scheduling information without
> >> specifying pipeline stages for each instruction.
> >> 
> >> Modified:
> >>    llvm/trunk/include/llvm/CodeGen/ScheduleHazardRecognizer.h
> >>    llvm/trunk/lib/CodeGen/ScoreboardHazardRecognizer.cpp
> >> 
> >> Modified:
> >> llvm/trunk/include/llvm/CodeGen/ScheduleHazardRecognizer.h
> >> URL:
> >> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/ScheduleHazardRecognizer.h?rev=157977&r1=157976&r2=157977&view=diff
> >> ==============================================================================
> >> --- llvm/trunk/include/llvm/CodeGen/ScheduleHazardRecognizer.h
> >> (original)
> >> +++ llvm/trunk/include/llvm/CodeGen/ScheduleHazardRecognizer.h Mon
> >> Jun  4 22:44:32 2012
> >> @@ -46,6 +46,8 @@
> >> 
> >>   /// atIssueLimit - Return true if no more instructions may be
> >>   issued in this
> >>   /// cycle.
> >> +  ///
> >> +  /// FIXME: remove this once MachineScheduler is the only
> >> client.
> > 
> > Does this mean that the MachineScheduler does, or will, do PostRA
> > scheduling as well?
> 
> When I implemented MachineScheduler, the plan was that both SD
> scheduler and PostRA scheduler would be eliminated. Then the
> scheduling data structure could be further streamlined for
> simplicity and compile time. I don’t see a fundamental reason the
> machine scheduler can’t run as a PostRA pass, it just needs to be
> setup to do that.

Do you mean calling substitutePass(&PostRASchedulerID, &MachineSchedulerID)? Or some kind of 'setup' within the machine scheduler itself?

 -Hal

> 
> -Andy
> 
> > -Hal
> > 
> >>   virtual bool atIssueLimit() const { return false; }
> >> 
> >>   /// getHazardType - Return the hazard type of emitting this
> >>   node.
> >>    There are
> >> 
> >> Modified: llvm/trunk/lib/CodeGen/ScoreboardHazardRecognizer.cpp
> >> URL:
> >> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/ScoreboardHazardRecognizer.cpp?rev=157977&r1=157976&r2=157977&view=diff
> >> ==============================================================================
> >> --- llvm/trunk/lib/CodeGen/ScoreboardHazardRecognizer.cpp
> >> (original)
> >> +++ llvm/trunk/lib/CodeGen/ScoreboardHazardRecognizer.cpp Mon Jun
> >>  4
> >> 22:44:32 2012
> >> @@ -39,9 +39,9 @@
> >>   DebugType = ParentDebugType;
> >> #endif
> >> 
> >> -  // Determine the maximum depth of any itinerary. This
> >> determines
> >> the
> >> -  // depth of the scoreboard. We always make the scoreboard at
> >> least
> >> 1
> >> -  // cycle deep to avoid dealing with the boundary condition.
> >> +  // Determine the maximum depth of any itinerary. This
> >> determines
> >> the depth of
> >> +  // the scoreboard. We always make the scoreboard at least 1
> >> cycle
> >> deep to
> >> +  // avoid dealing with the boundary condition.
> >>   unsigned ScoreboardDepth = 1;
> >>   if (ItinData && !ItinData->isEmpty()) {
> >>     IssueWidth = ItinData->IssueWidth;
> >> @@ -63,16 +63,22 @@
> >>       // Find the next power-of-2 >= ItinDepth
> >>       while (ItinDepth > ScoreboardDepth) {
> >>         ScoreboardDepth *= 2;
> >> +        // Don't set MaxLookAhead until we find at least one
> >> nonzero
> >> stage.
> >> +        // This way, an itinerary with no stages has
> >> MaxLookAhead==0, which
> >> +        // completely bypasses the scoreboard hazard logic.
> >> +        MaxLookAhead = ScoreboardDepth;
> >>       }
> >>     }
> >> -    MaxLookAhead = ScoreboardDepth;
> >>   }
> >> 
> >>   ReservedScoreboard.reset(ScoreboardDepth);
> >>   RequiredScoreboard.reset(ScoreboardDepth);
> >> 
> >> -  DEBUG(dbgs() << "Using scoreboard hazard recognizer: Depth = "
> >> -               << ScoreboardDepth << '\n');
> >> +  if (!MaxLookAhead)
> >> +    DEBUG(dbgs() << "Disabled scoreboard hazard recognizer\n");
> >> +  else
> >> +    DEBUG(dbgs() << "Using scoreboard hazard recognizer: Depth =
> >> "
> >> +          << ScoreboardDepth << '\n');
> >> }
> >> 
> >> void ScoreboardHazardRecognizer::Reset() {
> >> 
> >> 
> >> _______________________________________________
> >> llvm-commits mailing list
> >> llvm-commits at cs.uiuc.edu
> >> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> >> 
> > 
> > --
> > Hal Finkel
> > Assistant Computational Scientist
> > Leadership Computing Facility
> > Argonne National Laboratory
> 
> 

-- 
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory




More information about the llvm-commits mailing list