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

Andrew Trick atrick at apple.com
Tue Dec 3 10:15:08 PST 2013


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.

-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





More information about the llvm-commits mailing list