Skip to content
  1. Jan 10, 2012
    • Chandler Carruth's avatar
      Add 'llvm_unreachable' to passify GCC's understanding of the constraints · f3e8502c
      Chandler Carruth authored
      of several newly un-defaulted switches. This also helps optimizers
      (including LLVM's) recognize that every case is covered, and we should
      assume as much.
      
      llvm-svn: 147861
      f3e8502c
    • Kevin Enderby's avatar
      Various crash reporting tools have a problem with the dwarf generated for · 8d4a2204
      Kevin Enderby authored
      assembly source when it generates the TAG_subprogram dwarf debug info for
      the labels that have nothing between them as in this bit of assembly source:
      
      % cat ZeroLength.s 
      _func1:
      _func2:
       nop
      
      One solution would be to not emit the subsequent labels with the same address
      and use the next label with a different address or the end of the section for
      the AT_high_pc value of the TAG_subprogram.
      
      Turns out in llvm-mc it is not possible in all cases to determine of two
      symbols have the same value at the point we put out the TAG_subprogram dwarf
      debug info.
      
      So we will have llvm-mc instead of putting out TAG_subprogram's put out
      DW_TAG_label's.  And the DW_TAG_label does not have a AT_high_pc value which
      avoids the problem.
      
      This commit is only the functional change to make the diffs clear as to what is
      really being changed.  The next commit will be to clean up the names of such
      things like MCGenDwarfSubprogramEntry to something like MCGenDwarfLabelEntry.
      
      rdar://10666925
      
      llvm-svn: 147860
      8d4a2204
    • Devang Patel's avatar
      Add definition for intel asm variant. · 67bf992a
      Devang Patel authored
      Right now, this just adds additional entries in match table. The parser does not use them yet.
      
      llvm-svn: 147859
      67bf992a
    • David Blaikie's avatar
      edbb58c5
    • Nadav Rotem's avatar
      Fix a bug in the legalization of shuffle vectors. When we emulate shuffles... · 61bdf790
      Nadav Rotem authored
      Fix a bug in the legalization of shuffle vectors. When we emulate shuffles using BUILD_VECTORS we may be using a BV of different type. Make sure to cast it back.
      
      llvm-svn: 147851
      61bdf790
    • Benjamin Kramer's avatar
      Add definitions for AMD's bobcat (aka btver1) · 077ae1d7
      Benjamin Kramer authored
      llvm-svn: 147846
      077ae1d7
    • Craig Topper's avatar
      Fix a crash in AVX2 when trying to broadcast a double into a 128-bit vector.... · 430f3f1b
      Craig Topper authored
      Fix a crash in AVX2 when trying to broadcast a double into a 128-bit vector. There is no vbroadcastsd xmm, but we do need to support 64-bit integers broadcasted into xmm. Also factor the AVX check into the isVectorBroadcast function. This makes more sense since the AVX2 check was already inside.
      
      llvm-svn: 147844
      430f3f1b
    • Craig Topper's avatar
      Remove hasXMM/hasXMMInt functions. Move callers to hasSSE1/hasSSE2. This is... · b0c0f72a
      Craig Topper authored
      Remove hasXMM/hasXMMInt functions. Move callers to hasSSE1/hasSSE2. This is the final piece to remove the AVX hack that disabled SSE.
      
      llvm-svn: 147843
      b0c0f72a
    • Craig Topper's avatar
      Remove hasSSE*orAVX functions and change all callers to use just hasSSE*. AVX... · d97bbd7b
      Craig Topper authored
      Remove hasSSE*orAVX functions and change all callers to use just hasSSE*. AVX is now an SSE level and no longer disables SSE checks.
      
      llvm-svn: 147842
      d97bbd7b
    • Craig Topper's avatar
      Instruction selection priority fixes to remove the XMM/XMMInt/orAVX... · eb8f9e9e
      Craig Topper authored
      Instruction selection priority fixes to remove the XMM/XMMInt/orAVX predicates. Another commit will remove orAVX functions from X86SubTarget.
      
      llvm-svn: 147841
      eb8f9e9e
    • Evan Cheng's avatar
      Allow machine-cse to look across MBB boundary when cse'ing instructions that · 0be4144a
      Evan Cheng authored
      define physical registers. It's currently very restrictive, only catching
      cases where the CE is in an immediate (and only) predecessor. But it catches
      a surprising large number of cases.
      
      rdar://10660865
      
      llvm-svn: 147827
      0be4144a
    • Andrew Trick's avatar
      Enable LSR IV Chains with sufficient heuristics. · d5d2db9a
      Andrew Trick authored
      These heuristics are sufficient for enabling IV chains by
      default. Performance analysis has been done for i386, x86_64, and
      thumbv7. The optimization is rarely important, but can significantly
      speed up certain cases by eliminating spill code within the
      loop. Unrolled loops are prime candidates for IV chains. In many
      cases, the final code could still be improved with more target
      specific optimization following LSR. The goal of this feature is for
      LSR to make the best choice of induction variables.
      
      Instruction selection may not completely take advantage of this
      feature yet. As a result, there could be cases of slight code size
      increase.
      
      Code size can be worse on x86 because it doesn't support postincrement
      addressing. In fact, when chains are formed, you may see redundant
      address plus stride addition in the addressing mode. GenerateIVChains
      tries to compensate for the common cases.
      
      On ARM, code size increase can be mitigated by using postincrement
      addressing, but downstream codegen currently misses some opportunities.
      
      llvm-svn: 147826
      d5d2db9a
    • Jakob Stoklund Olesen's avatar
      Accurately model hardware alignment rounding. · f09a3165
      Jakob Stoklund Olesen authored
      On Thumb, the displacement computation hardware uses the address of the
      current instruction rouned down to a multiple of 4.  Include this
      rounding in the UserOffset we compute for each instruction.
      
      When inline asm is present, the instruction alignment may not be known.
      Constrain the maximum displacement instead in that case.
      
      This makes it possible for CreateNewWater() and OffsetIsInRange() to
      agree about the valid displacements.  When they disagree, infinite
      looping happens.
      
      As always, test cases for this stuff are insane.
      
      <rdar://problem/10660175>
      
      llvm-svn: 147825
      f09a3165
    • Rafael Espindola's avatar
      Remove the logging streamer. · 5cb98f10
      Rafael Espindola authored
      llvm-svn: 147820
      5cb98f10
  2. Jan 09, 2012
  3. Jan 08, 2012
Loading