Skip to content
  1. Sep 13, 2012
  2. Sep 12, 2012
  3. Sep 11, 2012
  4. Sep 10, 2012
  5. Sep 09, 2012
  6. Sep 08, 2012
  7. Sep 07, 2012
  8. Sep 06, 2012
  9. Sep 05, 2012
  10. Sep 04, 2012
    • Jakub Staszak's avatar
      Fix my previous patch (r163164). It does now what it is supposed to do: · 85a77875
      Jakub Staszak authored
      Doesn't set MadeChange to TRUE if BypassSlowDivision doesn't change anything.
      
      llvm-svn: 163165
      85a77875
    • Jakub Staszak's avatar
      Return false if BypassSlowDivision doesn't change anything. · 46beca63
      Jakub Staszak authored
      Also a few minor changes:
      - use pre-inc instead of post-inc
      - use isa instead of dyn_cast
      - 80 col
      - trailing spaces
      
      llvm-svn: 163164
      46beca63
    • Preston Gurd's avatar
      Generic Bypass Slow Div · cdf540d5
      Preston Gurd authored
      - CodeGenPrepare pass for identifying div/rem ops
      - Backend specifies the type mapping using addBypassSlowDivType
      - Enabled only for Intel Atom with O2 32-bit -> 8-bit
      - Replace IDIV with instructions which test its value and use DIVB if the value
      is positive and less than 256.
      - In the case when the quotient and remainder of a divide are used a DIV
      and a REM instruction will be present in the IR. In the non-Atom case
      they are both lowered to IDIVs and CSE removes the redundant IDIV instruction,
      using the quotient and remainder from the first IDIV. However,
      due to this optimization CSE is not able to eliminate redundant
      IDIV instructions because they are located in different basic blocks.
      This is overcome by calculating both the quotient (DIV) and remainder (REM)
      in each basic block that is inserted by the optimization and reusing the result
      values when a subsequent DIV or REM instruction uses the same operands.
      - Test cases check for the presents of the optimization when calculating
      either the quotient, remainder,  or both.
      
      Patch by Tyler Nowicki!
      
      llvm-svn: 163150
      cdf540d5
    • Nadav Rotem's avatar
      LICM may hoist an instruction with undefined behavior above a trap. · 03dcd85b
      Nadav Rotem authored
      Scan the body of the loop and find instructions that may trap.
      Use this information when deciding if it is safe to hoist or sink instructions.
      Notice that we can optimize the search of instructions that may throw in the case of nested loops.
      
      rdar://11518836
      
      llvm-svn: 163132
      03dcd85b
  11. Sep 02, 2012
    • Nadav Rotem's avatar
      Not all targets have efficient ISel code generation for select instructions. · 9d832026
      Nadav Rotem authored
      For example, the ARM target does not have efficient ISel handling for vector
      selects with scalar conditions. This patch adds a TLI hook which allows the
      different targets to report which selects are supported well and which selects
      should be converted to CF duting codegen prepare.
      
      llvm-svn: 163093
      9d832026
    • Benjamin Kramer's avatar
      LoopRotation: Make the brute force DomTree update more brute force. · 599a4bb6
      Benjamin Kramer authored
      We update until we hit a fixpoint. This is probably slow but also
      slightly simplifies the code. It should also fix the occasional
      invalid domtrees observed when building with expensive checking.
      
      I couldn't find a case where this had a measurable slowdown, but
      if someone finds a pathological case where it does we may have
      to find a cleverer way of updating dominators here.
      
      Thanks to Duncan for the test case.
      
      llvm-svn: 163091
      599a4bb6
    • Logan Chien's avatar
      Rename ANDROIDEABI to Android. · 9ab55b8d
      Logan Chien authored
      Most of the code guarded with ANDROIDEABI are not
      ARM-specific, and having no relation with arm-eabi.
      Thus, it will be more natural to call this
      environment "Android" instead of "ANDROIDEABI".
      
      Note: We are not using ANDROID because several projects
      are using "-DANDROID" as the conditional compilation
      flag.
      
      llvm-svn: 163087
      9ab55b8d
  12. Sep 01, 2012
  13. Aug 30, 2012
    • Michael Ilseman's avatar
      test · 30c3e14e
      Michael Ilseman authored
      llvm-svn: 162914
      30c3e14e
    • Benjamin Kramer's avatar
      LoopRotate: Also rotate loops with multiple exits. · afdfdb5c
      Benjamin Kramer authored
      The old PHI updating code in loop-rotate was replaced with SSAUpdater a while
      ago, it has no problems with comples PHIs. What had to be fixed is detecting
      whether a loop was already rotated and updating dominators when multiple exits
      were present.
      
      This change increases overall code size a bit, mostly due to additional loop
      unrolling opportunities. Passes test-suite and selfhost with -verify-dom-info.
      Fixes PR7447.
      
      Thanks to Andy for the input on the domtree updating code.
      
      llvm-svn: 162912
      afdfdb5c
    • Benjamin Kramer's avatar
      InstCombine: Fix comment to reflect the code. · d4a64716
      Benjamin Kramer authored
      llvm-svn: 162911
      d4a64716
    • Alexey Samsonov's avatar
      Whitespace · f54e3aae
      Alexey Samsonov authored
      llvm-svn: 162907
      f54e3aae
Loading