[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