Skip to content
  1. Dec 20, 2011
  2. Dec 19, 2011
    • Evan Cheng's avatar
      Add a if-conversion optimization that allows 'true' side of a diamond to be · 4266a793
      Evan Cheng authored
      unpredicated. That is, turn
       subeq  r0, r1, #1
       addne  r0, r1, #1                                                                                                                                                                                                     
      into
       sub    r0, r1, #1
       addne  r0, r1, #1
      
      For targets where conditional instructions are always executed, this may be
      beneficial. It may remove pseudo anti-dependency in out-of-order execution
      CPUs. e.g.
       op    r1, ...
       str   r1, [r10]        ; end-of-life of r1 as div result
       cmp   r0, #65
       movne r1, #44  ; raw dependency on previous r1
       moveq r1, #12
      
      If movne is unpredicated, then
       op    r1, ...
       str   r1, [r10]
       cmp   r0, #65
       mov   r1, #44  ; r1 written unconditionally
       moveq r1, #12
      
      Both mov and moveq are no longer depdendent on the first instruction. This gives
      the out-of-order execution engine more freedom to reorder them.
      
      This has passed entire LLVM test suite. But it has not been enabled for any ARM
      variant pending more performance evaluation.
      
      rdar://8951196
      
      llvm-svn: 146914
      4266a793
    • Eli Friedman's avatar
      5bb6826f
    • Jakob Stoklund Olesen's avatar
      Handle sub-register operands in recomputeRegClass(). · 8f9c6c4a
      Jakob Stoklund Olesen authored
      Now that getMatchingSuperRegClass() returns accurate results, it can be
      used to compute constraints imposed by instructions using a sub-register
      of a virtual register.
      
      This means we can recompute the register class of any virtual register
      by combining the constraints from all its uses.
      
      llvm-svn: 146874
      8f9c6c4a
  3. Dec 18, 2011
  4. Dec 17, 2011
  5. Dec 15, 2011
  6. Dec 14, 2011
  7. Dec 13, 2011
    • Chad Rosier's avatar
      [fast-isel] Remove SelectInsertValue() as fast-isel wasn't designed to handle · b941674a
      Chad Rosier authored
      instructions that define aggregate types.
      
      llvm-svn: 146492
      b941674a
    • Bill Wendling's avatar
      Avoid using the 'insertvalue' instruction here. · 2f1d93ff
      Bill Wendling authored
      Fast ISel isn't able to handle 'insertvalue' and it causes a large slowdown
      during -O0 compilation. We don't necessarily need to generate an aggregate of
      the values here if they're just going to be extracted directly afterwards.
      <rdar://problem/10530851>
      
      llvm-svn: 146481
      2f1d93ff
    • Nick Lewycky's avatar
      DW_AT_accessibility is "constant" class, not form class, so it may not use · cb91849f
      Nick Lewycky authored
      DW_FORM_flag. Use DW_FORM_data1 for one byte.
      
      llvm-svn: 146475
      cb91849f
    • Chandler Carruth's avatar
      Initial CodeGen support for CTTZ/CTLZ where a zero input produces an · 637cc6a8
      Chandler Carruth authored
      undefined result. This adds new ISD nodes for the new semantics,
      selecting them when the LLVM intrinsic indicates that the undef behavior
      is desired. The new nodes expand trivially to the old nodes, so targets
      don't actually need to do anything to support these new nodes besides
      indicating that they should be expanded. I've done this for all the
      operand types that I could figure out for all the targets. Owners of
      various targets, please review and let me know if any of these are
      incorrect.
      
      Note that the expand behavior is *conservatively correct*, and exactly
      matches LLVM's current behavior with these operations. Ideally this
      patch will not change behavior in any way. For example the regtest suite
      finds the exact same instruction sequences coming out of the code
      generator. That's why there are no new tests here -- all of this is
      being exercised by the existing test suite.
      
      Thanks to Duncan Sands for reviewing the various bits of this patch and
      helping me get the wrinkles ironed out with expanding for each target.
      Also thanks to Chris for clarifying through all the discussions that
      this is indeed the approach he was looking for. That said, there are
      likely still rough spots. Further review much appreciated.
      
      llvm-svn: 146466
      637cc6a8
    • Chad Rosier's avatar
      2f8347e0
  8. Dec 12, 2011
  9. Dec 10, 2011
  10. Dec 09, 2011
Loading