[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 09:19:30 PST 2013


----- 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?

 -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



More information about the llvm-commits mailing list