Skip to content
  1. Sep 05, 2012
  2. 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
    • Jakub Staszak's avatar
      Remove unneeded code. · ee2b3259
      Jakub Staszak authored
      llvm-svn: 163160
      ee2b3259
    • Jakob Stoklund Olesen's avatar
      Typo. · d92e2bc2
      Jakob Stoklund Olesen authored
      llvm-svn: 163154
      d92e2bc2
    • Jakob Stoklund Olesen's avatar
      Actually use the MachineOperand field for isRegTiedToDefOperand(). · 9fceda74
      Jakob Stoklund Olesen authored
      The MachineOperand::TiedTo field was maintained, but not used.
      
      This patch enables it in isRegTiedToDefOperand() and
      isRegTiedToUseOperand() which are the actual functions use by the
      register allocator.
      
      llvm-svn: 163153
      9fceda74
    • Jakob Stoklund Olesen's avatar
      Move tie checks into MachineVerifier::visitMachineOperand. · c7579cdd
      Jakob Stoklund Olesen authored
      llvm-svn: 163152
      c7579cdd
    • Jakob Stoklund Olesen's avatar
      Allow tied uses and defs in different orders. · 0a09da83
      Jakob Stoklund Olesen authored
      After much agonizing, use a full 4 bits of precious MachineOperand space
      to encode this. This uses existing padding, and doesn't grow
      MachineOperand beyond its current 32 bytes.
      
      This allows tied defs among the first 15 operands on a normal
      instruction, just like the current MCInstrDesc constraint encoding.
      Inline assembly needs to be able to tie more than the first 15 operands,
      and gets special treatment.
      
      Tied uses can appear beyond 15 operands, as long as they are tied to a
      def that's in range.
      
      llvm-svn: 163151
      0a09da83
    • 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
    • Bob Wilson's avatar
      Make sure macros in the include subdirectory are not used without being defined. · d43a50d3
      Bob Wilson authored
      Rationale: For each preprocessor macro, either the definedness is what's
      meaningful, or the value is what's meaningful, or both. If definedness is
      meaningful, we should use #ifdef. If the value is meaningful, we should use
      and #ifdef interchangeably for the same macro, seems ugly to me, even if
      undefined macros are zero if used.
      
      This also has the benefit that including an LLVM header doesn't prevent
      you from compiling with -Wundef -Werror.
      
      Patch by John Garvin!
      <rdar://problem/12189979>
      
      llvm-svn: 163148
      d43a50d3
    • Sergei Larin's avatar
      Porting Hexagon MI Scheduler to the new API. · 4d8986af
      Sergei Larin authored
      Change current Hexagon MI scheduler to use new converging
      scheduler. Integrates DFA resource model into it.
      
      llvm-svn: 163137
      4d8986af
    • Arnold Schwaighofer's avatar
      Patch to implement UMLAL/SMLAL instructions for the ARM architecture · f00fb1c5
      Arnold Schwaighofer authored
      This patch corrects the definition of umlal/smlal instructions and adds support
      for matching them to the ARM dag combiner.
      
      Bug 12213
      
      Patch by Yin Ma!
      
      llvm-svn: 163136
      f00fb1c5
    • Elena Demikhovsky's avatar
      This patch optimizes shuffle instruction - generates 2 instructions instead of 4. · cbe99bbb
      Elena Demikhovsky authored
      Since this specific shuffle is widely used in many workloads we have ~10% performance on them.
      
      shufflevector <8 x float> %A, <8 x float> %B, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
      
      vmovaps (%rdx), %ymm0
      vshufps $8, %ymm0, %ymm0, %ymm0
      vmovaps (%rcx), %ymm1
      vshufps $8, %ymm0, %ymm1, %ymm1
      vunpcklps       %ymm0, %ymm1, %ymm0
      
      vmovaps (%rcx), %ymm0
      vmovsldup       (%rdx), %ymm1
      vblendps        $85, %ymm0, %ymm1, %ymm0
      
      llvm-svn: 163134
      cbe99bbb
    • 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
Loading