Skip to content
  1. Mar 09, 2012
    • Chandler Carruth's avatar
      Undo a previous restriction on the inline cost calculation which Nick · 783b7198
      Chandler Carruth authored
      introduced. Specifically, there are cost reductions for all
      constant-operand icmp instructions against an alloca, regardless of
      whether the alloca will in fact be elligible for SROA. That means we
      don't want to abort the icmp reduction computation when we abort the
      SROA reduction computation. That in turn frees us from the need to keep
      a separate worklist and defer the ICmp calculations.
      
      Use this new-found freedom and some judicious function boundaries to
      factor the innards of computing the cost factor of any given instruction
      out of the loop over the instructions and into static helper functions.
      This greatly simplifies the code, and hopefully makes it more clear what
      is happening here.
      
      Reviewed by Eric Christopher. There is some concern that we'd like to
      ensure this doesn't get out of hand, and I plan to benchmark the effects
      of this change over the next few days along with some further fixes to
      the inline cost.
      
      llvm-svn: 152368
      783b7198
    • Chad Rosier's avatar
      Fix a regression from r147481. · a281afc6
      Chad Rosier authored
      Original commit message from r147481:
      DAGCombine for transforming 128->256 casts into a vmovaps, rather
      then a vxorps + vinsertf128 pair if the original vector came from a load.
      
      Fix:
      Unaligned loads need to generate a vmovups.
      rdar://10974078
      
      llvm-svn: 152366
      a281afc6
    • Andrew Trick's avatar
      misched: allow the default scheduler to be one chosen by the target. · 45300687
      Andrew Trick authored
      llvm-svn: 152360
      45300687
    • Evan Cheng's avatar
      bc3b4e3f
  2. Mar 08, 2012
  3. Mar 07, 2012
    • Benjamin Kramer's avatar
      Copy the right amount of elements. · 22842f89
      Benjamin Kramer authored
      llvm-svn: 152254
      22842f89
    • Benjamin Kramer's avatar
      SmallPtrSet: Copy all the elements when swapping, not just numelements. · 6e8d4b8e
      Benjamin Kramer authored
      This fixes a build failure in webkit. Copying all elements shouldn't be
      necessary, I'll look out for a better fix soon.
      
      llvm-svn: 152252
      6e8d4b8e
    • Chad Rosier's avatar
      [fast-isel] ARMEmitCmp generates FMSTAT, which transfers the floating-point · 377f1f2d
      Chad Rosier authored
      condition flags to CPSR.  This allows us to simplify SelectCmp.
      Patch by Zonr Chang <zonr.xchg@gmail.com>.
      
      llvm-svn: 152243
      377f1f2d
    • Jakob Stoklund Olesen's avatar
      Fix infinite loop in nested multiclasses. · aa0f752f
      Jakob Stoklund Olesen authored
      Patch by Michael Liao!
      
      llvm-svn: 152232
      aa0f752f
    • Chandler Carruth's avatar
      Try to clarify this comment some. · 636ee38a
      Chandler Carruth authored
      llvm-svn: 152221
      636ee38a
    • Chandler Carruth's avatar
      Remove another outbreak of customized (and completely broken) hashing. · 962152ca
      Chandler Carruth authored
      This one is particularly annoying because the hashing algorithm is
      highly specialized, with a strange "equivalence" definition that subsets
      the fields involved.
      
      Still, this looks at the exact same set of data as the old code, but
      without bitwise or-ing over parts of it and other mixing badness. No
      functionality changed here. I've left a substantial fixme about the fact
      that there is a cleaner and more principled way to do this, but it
      requires making the equality definition actual stable for particular
      types...
      
      llvm-svn: 152218
      962152ca
    • Bill Wendling's avatar
      Where the BranchFolding pass removes a branch then adds another better branch, · 7c5dcb6c
      Bill Wendling authored
      the DebugLoc information can be maintained throughout by grabbing the DebugLoc
      before the RemoveBranch and then passing the result to the InsertBranch.
      Patch by Andrew Stanford-Jason!
      
      llvm-svn: 152212
      7c5dcb6c
    • Andrew Trick's avatar
      Fix cmake · 1a1b54a2
      Andrew Trick authored
      llvm-svn: 152210
      1a1b54a2
    • Andrew Trick's avatar
      comment · f9fa8afd
      Andrew Trick authored
      llvm-svn: 152209
      f9fa8afd
    • Andrew Trick's avatar
      misched preparation: clarify ScheduleDAG and ScheduleDAGInstrs roles. · 60cf03e7
      Andrew Trick authored
      ScheduleDAG is responsible for the DAG: SUnits and SDeps. It provides target hooks for latency computation.
      
      ScheduleDAGInstrs extends ScheduleDAG and defines the current scheduling region in terms of MachineInstr iterators. It has access to the target's scheduling itinerary data. ScheduleDAGInstrs provides the logic for building the ScheduleDAG for the sequence of MachineInstrs in the current region. Target's can implement highly custom schedulers by extending this class.
      
      ScheduleDAGPostRATDList provides the driver and diagnostics for current postRA scheduling. It maintains a current Sequence of scheduled machine instructions and logic for splicing them into the block. During scheduling, it uses the ScheduleHazardRecognizer provided by the target.
      
      Specific changes:
      - Removed driver code from ScheduleDAG. clearDAG is the only interface needed.
      
      - Added enterRegion/exitRegion hooks to ScheduleDAGInstrs to delimit the scope of each scheduling region and associated DAG. They should be used to setup and cleanup any region-specific state in addition to the DAG itself. This is necessary because we reuse the same ScheduleDAG object for the entire function. The target may extend these hooks to do things at regions boundaries, like bundle terminators. The hooks are called even if we decide not to schedule the region. So all instructions in a block are "covered" by these calls.
      
      - Added ScheduleDAGInstrs::begin()/end() public API.
      
      - Moved Sequence into the driver layer, which is specific to the scheduling algorithm.
      
      llvm-svn: 152208
      60cf03e7
    • Andrew Trick's avatar
      ScheduleDAGInstrs comments · 42756e2e
      Andrew Trick authored
      llvm-svn: 152207
      42756e2e
    • Andrew Trick's avatar
      misched preparation: modularize schedule emission. · e932bb77
      Andrew Trick authored
      ScheduleDAG has nothing to do with how the instructions are scheduled.
      
      llvm-svn: 152206
      e932bb77
    • Andrew Trick's avatar
      misched preparation: modularize schedule printing. · edee68ce
      Andrew Trick authored
      ScheduleDAG will not refer to the scheduled instruction sequence.
      
      llvm-svn: 152205
      edee68ce
Loading