Skip to content
  1. Dec 06, 2010
  2. Dec 05, 2010
    • Cameron Zwarich's avatar
      Some cleanup before I start committing some incremental progress on · c7223a3e
      Cameron Zwarich authored
      StrongPHIElimination.
      
      llvm-svn: 120961
      c7223a3e
    • Evan Cheng's avatar
      Making use of VFP / NEON floating point multiply-accumulate / subtraction is · 62c7b5bf
      Evan Cheng authored
      difficult on current ARM implementations for a few reasons.
      1. Even though a single vmla has latency that is one cycle shorter than a pair
         of vmul + vadd, a RAW hazard during the first (4? on Cortex-a8) can cause
         additional pipeline stall. So it's frequently better to single codegen
         vmul + vadd.
      2. A vmla folowed by a vmul, vmadd, or vsub causes the second fp instruction to
         stall for 4 cycles. We need to schedule them apart.
      3. A vmla followed vmla is a special case. Obvious issuing back to back RAW
         vmla + vmla is very bad. But this isn't ideal either:
           vmul
           vadd
           vmla
         Instead, we want to expand the second vmla:
           vmla
           vmul
           vadd
         Even with the 4 cycle vmul stall, the second sequence is still 2 cycles
         faster.
      
      Up to now, isel simply avoid codegen'ing fp vmla / vmls. This works well enough
      but it isn't the optimial solution. This patch attempts to make it possible to
      use vmla / vmls in cases where it is profitable.
      
      A. Add missing isel predicates which cause vmla to be codegen'ed.
      B. Make sure the fmul in (fadd (fmul)) has a single use. We don't want to
         compute a fmul and a fmla.
      C. Add additional isel checks for vmla, avoid cases where vmla is feeding into
         fp instructions (except for the #3 exceptional case).
      D. Add ARM hazard recognizer to model the vmla / vmls hazards.
      E. Add a special pre-regalloc case to expand vmla / vmls when it's likely the
         vmla / vmls will trigger one of the special hazards.
      
      Work in progress, only A+B are enabled.
      
      llvm-svn: 120960
      62c7b5bf
    • Cameron Zwarich's avatar
      Remove the PHIElimination.h header, as it is no longer needed. · a3fb8cb3
      Cameron Zwarich authored
      llvm-svn: 120959
      a3fb8cb3
    • Frits van Bommel's avatar
      Clarify some of the differences between indexing with getelementptr and... · 7cf63ace
      Frits van Bommel authored
      Clarify some of the differences between indexing with getelementptr and indexing with insertvalue/extractvalue.
      
      llvm-svn: 120957
      7cf63ace
    • Frits van Bommel's avatar
      Fix PR 4170 by having ExtractValueInst::getIndexedType() reject out-of-bounds indexing. · 16ebe77b
      Frits van Bommel authored
      Also add asserts that the indices are valid in InsertValueInst::init(). ExtractValueInst already asserts when constructed with invalid indices.
      
      llvm-svn: 120956
      16ebe77b
Loading