Skip to content
  1. Jan 10, 2012
    • Craig Topper's avatar
      Instruction selection priority fixes to remove the XMM/XMMInt/orAVX... · eb8f9e9e
      Craig Topper authored
      Instruction selection priority fixes to remove the XMM/XMMInt/orAVX predicates. Another commit will remove orAVX functions from X86SubTarget.
      
      llvm-svn: 147841
      eb8f9e9e
    • Evan Cheng's avatar
      Allow machine-cse to look across MBB boundary when cse'ing instructions that · 0be4144a
      Evan Cheng authored
      define physical registers. It's currently very restrictive, only catching
      cases where the CE is in an immediate (and only) predecessor. But it catches
      a surprising large number of cases.
      
      rdar://10660865
      
      llvm-svn: 147827
      0be4144a
    • Andrew Trick's avatar
      Enable LSR IV Chains with sufficient heuristics. · d5d2db9a
      Andrew Trick authored
      These heuristics are sufficient for enabling IV chains by
      default. Performance analysis has been done for i386, x86_64, and
      thumbv7. The optimization is rarely important, but can significantly
      speed up certain cases by eliminating spill code within the
      loop. Unrolled loops are prime candidates for IV chains. In many
      cases, the final code could still be improved with more target
      specific optimization following LSR. The goal of this feature is for
      LSR to make the best choice of induction variables.
      
      Instruction selection may not completely take advantage of this
      feature yet. As a result, there could be cases of slight code size
      increase.
      
      Code size can be worse on x86 because it doesn't support postincrement
      addressing. In fact, when chains are formed, you may see redundant
      address plus stride addition in the addressing mode. GenerateIVChains
      tries to compensate for the common cases.
      
      On ARM, code size increase can be mitigated by using postincrement
      addressing, but downstream codegen currently misses some opportunities.
      
      llvm-svn: 147826
      d5d2db9a
    • Jakob Stoklund Olesen's avatar
      Accurately model hardware alignment rounding. · f09a3165
      Jakob Stoklund Olesen authored
      On Thumb, the displacement computation hardware uses the address of the
      current instruction rouned down to a multiple of 4.  Include this
      rounding in the UserOffset we compute for each instruction.
      
      When inline asm is present, the instruction alignment may not be known.
      Constrain the maximum displacement instead in that case.
      
      This makes it possible for CreateNewWater() and OffsetIsInRange() to
      agree about the valid displacements.  When they disagree, infinite
      looping happens.
      
      As always, test cases for this stuff are insane.
      
      <rdar://problem/10660175>
      
      llvm-svn: 147825
      f09a3165
    • Rafael Espindola's avatar
      Remove the logging streamer. · 5cb98f10
      Rafael Espindola authored
      llvm-svn: 147820
      5cb98f10
  2. Jan 09, 2012
  3. Jan 08, 2012
  4. Jan 07, 2012
Loading