Skip to content
  1. Jun 27, 2011
    • Owen Anderson's avatar
      The index stored in the RegDefIter is one after the current index. When... · b0a5a1ee
      Owen Anderson authored
      The index stored in the RegDefIter is one after the current index.  When getting the index, decrement it so that it points to the current element.  Fixes an off-by-one bug encountered when trying to make use of MVT::untyped.
      
      llvm-svn: 133923
      b0a5a1ee
    • Andrew Trick's avatar
      pre-RA-sched: Cleanup register pressure tracking. · 31f25bc6
      Andrew Trick authored
      Removed the check that peeks past EXTRA_SUBREG, which I don't think
      makes sense any more. Intead treat it as a normal register def. No
      significant affect on x86 or ARM benchmarks.
      
      llvm-svn: 133917
      31f25bc6
    • Jakob Stoklund Olesen's avatar
      Distinguish early clobber output operands from clobbered registers. · 537a302d
      Jakob Stoklund Olesen authored
      Both become <earlyclobber> defs on the INLINEASM MachineInstr, but we
      now use two different asm operand kinds.
      
      The new Kind_Clobber is treated identically to the old
      Kind_RegDefEarlyClobber for now, but x87 floating point stack inline
      assembly does care about the difference.
      
      This will pop a register off the stack:
      
        asm("fstp %st" : : "t"(x) : "st");
      
      While this will pop the input and push an output:
      
        asm("fst %st" : "=&t"(r) : "t"(x));
      
      We need to know if ST0 was a clobber or an output operand, and we can't
      depend on <dead> flags for that.
      
      llvm-svn: 133902
      537a302d
  2. Jun 25, 2011
  3. Jun 24, 2011
  4. Jun 22, 2011
  5. Jun 21, 2011
    • Evan Cheng's avatar
      Teach dag combine to match halfword byteswap patterns. · 4c0bd962
      Evan Cheng authored
      1. (((x) & 0xFF00) >> 8) | (((x) & 0x00FF) << 8)
         => (bswap x) >> 16
      2. ((x&0xff)<<8)|((x&0xff00)>>8)|((x&0xff000000)>>8)|((x&0x00ff0000)<<8))
         => (rotl (bswap x) 16)
      
      This allows us to eliminate most of the def : Pat patterns for ARM rev16
      revsh instructions. It catches many more cases for ARM and x86.
      
      rdar://9609108
      
      llvm-svn: 133503
      4c0bd962
  6. Jun 20, 2011
  7. Jun 19, 2011
  8. Jun 18, 2011
  9. Jun 17, 2011
  10. Jun 16, 2011
    • Jakub Staszak's avatar
      Introduce MachineBranchProbabilityInfo class, which has similar API to · 12a43bdd
      Jakub Staszak authored
      BranchProbabilityInfo (expect setEdgeWeight which is not available here).
      Branch Weights are kept in MachineBasicBlocks. To turn off this analysis
      set -use-mbpi=false.
      
      llvm-svn: 133184
      12a43bdd
    • Owen Anderson's avatar
      Change the REG_SEQUENCE SDNode to take an explict register class ID as its... · 5fc8b77f
      Owen Anderson authored
      Change the REG_SEQUENCE SDNode to take an explict register class ID as its first operand.  This operand is lowered away by the time we reach MachineInstrs, so the actual register-allocation handling of them doesn't need to change.
      This is intended to support using REG_SEQUENCE SDNode's with type MVT::untyped, and is part of the long road to eliminating some of the hacks we currently use to support register pairs and other strange constraints, particularly on ARM NEON.
      
      llvm-svn: 133178
      5fc8b77f
    • Jakob Stoklund Olesen's avatar
      Add TargetRegisterInfo::getRawAllocationOrder(). · 1f641d57
      Jakob Stoklund Olesen authored
      This virtual function will replace allocation_order_begin/end as the one
      to override when implementing custom allocation orders. It is simpler to
      have one function return an ArrayRef than having two virtual functions
      computing different ends of the same array.
      
      Use getRawAllocationOrder() in place of allocation_order_begin() where
      it makes sense, but leave some clients that look like they really want
      the filtered allocation orders from RegisterClassInfo.
      
      llvm-svn: 133170
      1f641d57
    • Nick Lewycky's avatar
      Add a DAGCombine for (ext (binop (load x), cst)). · 6d677cfd
      Nick Lewycky authored
      llvm-svn: 133124
      6d677cfd
    • Owen Anderson's avatar
      Add a new MVT::untyped. This will be used in future work for modelling ISA... · 96adc4a5
      Owen Anderson authored
      Add a new MVT::untyped.  This will be used in future work for modelling ISA features like register pairs and lists with "interesting" constraints (such as ARM NEON contiguous register lists or even-odd paired registers).  We need to be able to generate these instructions (often from intrinsics), but don't want to have to assign a legal type to them.  Instead, we'll use an "untyped" edge to bypass the type-checking and simply ensure that the register classes match.
      
      llvm-svn: 133106
      96adc4a5
  11. Jun 15, 2011
  12. Jun 14, 2011
  13. Jun 13, 2011
  14. Jun 12, 2011
  15. Jun 11, 2011
  16. Jun 10, 2011
  17. Jun 09, 2011
  18. Jun 08, 2011
  19. Jun 07, 2011
Loading