Skip to content
  1. Jun 18, 2013
  2. Jun 17, 2013
  3. Jun 16, 2013
    • David Blaikie's avatar
      DebugInfo: remove target-specific Frame Index handling for DBG_VALUE MachineInstrs · b735b4d6
      David Blaikie authored
      Frame index handling is now target-agnostic, so delete the target hooks
      for creation & asm printing of target-specific addressing in DBG_VALUEs
      and any related functions.
      
      llvm-svn: 184067
      b735b4d6
    • David Blaikie's avatar
      Debug Info: Simplify Frame Index handling in DBG_VALUE Machine Instructions · 0252265b
      David Blaikie authored
      Rather than using the full power of target-specific addressing modes in
      DBG_VALUEs with Frame Indicies, simply use Frame Index + Offset. This
      reduces the complexity of debug info handling down to two
      representations of values (reg+offset and frame index+offset) rather
      than three or four.
      
      Ideally we could ensure that frame indicies had been eliminated by the
      time we reached an assembly or dwarf generation, but I haven't spent the
      time to figure out where the FIs are leaking through into that & whether
      there's a good place to convert them. Some FI+offset=>reg+offset
      conversion is done (see PrologEpilogInserter, for example) which is
      necessary for some SelectionDAG assumptions about registers, I believe,
      but it might be possible to make this a more thorough conversion &
      ensure there are no remaining FIs no matter how instruction selection
      is performed.
      
      llvm-svn: 184066
      0252265b
  4. Jun 15, 2013
  5. Jun 14, 2013
    • Amaury de la Vieuville's avatar
      ARM: fix thumb coprocessor instruction with pre-writeback disassembly · e804ae11
      Amaury de la Vieuville authored
      was        stc2 p0, c0, [r0]!
      instead of stc2 p0, c0, [r0,#0]!
      
      llvm-svn: 183975
      e804ae11
    • Benjamin Kramer's avatar
      X86: cvtpi2ps is just an SSE instruction with MMX operands. It has no AVX equivalent. · b289319f
      Benjamin Kramer authored
      Give it the right register format so we can also emit it when AVX is enabled.
      
      llvm-svn: 183971
      b289319f
    • JF Bastien's avatar
      Enable FastISel on ARM for Linux and NaCl, not MCJIT · 18db1f2f
      JF Bastien authored
      This is a resubmit of r182877, which was reverted because it broken
      MCJIT tests on ARM. The patch leaves MCJIT on ARM as it was before: only
      enabled for iOS. I've CC'ed people from the original review and revert.
      
      FastISel was only enabled for iOS ARM and Thumb2, this patch enables it
      for ARM (not Thumb2) on Linux and NaCl, but not MCJIT.
      
      Thumb2 support needs a bit more work, mainly around register class
      restrictions.
      
      The patch punts to SelectionDAG when doing TLS relocation on non-Darwin
      targets. I will fix this and other FastISel-to-SelectionDAG failures in
      a separate patch.
      
      The patch also forces FastISel to retain frame pointers: iOS always
      keeps them for backtracking (so emitted code won't change because of
      this), but Linux was getting much worse code that was incorrect when
      using big frames (such as test-suite's lencod). I'll also fix this in a
      later patch, it will probably require a peephole so that FastISel
      doesn't rematerialize frame pointers back-to-back.
      
      The test changes are straightforward, similar to:
        http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20130513/174279.html
      They also add a vararg test that got dropped in that change.
      
      I ran all of lnt test-suite on A15 hardware with --optimize-option=-O0
      and all the tests pass. All the tests also pass on x86 make check-all. I
      also re-ran the check-all tests that failed on ARM, and they all seem to
      pass.
      
      llvm-svn: 183966
      18db1f2f
  6. Jun 13, 2013
  7. Jun 12, 2013
    • David Blaikie's avatar
      Revert r183854 (PPC: Fix switch warnings from r183841) · c2467c4e
      David Blaikie authored
      Now that the PRED_BAD has been removed, this is failing the Clang
      -Werror build due to -Wcovered-switch-default.
      
      llvm-svn: 183863
      c2467c4e
    • Bill Schmidt's avatar
      [PowerPC] Remove PRED_BAD from PPC::Predicate enumeration. · 4fcb8c26
      Bill Schmidt authored
      I'm taking David Blaikie's suggestion to use an
      Optional<PPC::Predicate> return value instead.  That's the right
      solution for this problem.  Thanks for pointing out that possibility!
      
      llvm-svn: 183858
      4fcb8c26
    • Bill Schmidt's avatar
      [PowerPC] Fix switch warnings from r183841. · 31c60f74
      Bill Schmidt authored
      Introducing PRED_BAD caused some unexpected warnings that are now
      suppressed.
      
      llvm-svn: 183854
      31c60f74
    • Bill Schmidt's avatar
      [PowerPC] Expose some calling convention functions in PPCISelLowering.h. · 230b4513
      Bill Schmidt authored
      This is a preparatory patch for fast-isel support.  The instruction
      selector will need to access some functions in PPCGenCallingConv.inc,
      which in turn requires several helper functions to be defined.  These
      are currently defined near the only use of PCCGenCallingConv.inc,
      inside PPCISelLowering.cpp.  This patch moves the declaration of the
      functions into the associated header file to provide the needed
      visibility.
      
      No functional change intended.
      
      llvm-svn: 183844
      230b4513
    • Bill Schmidt's avatar
      Add artificial PRED_BAD to PPC::Predicate enumeration. · 6207a4b7
      Bill Schmidt authored
      Allows returning a PPC::Predicate from a function with a no-predicate
      value possible.  Preparatory patch for fast-isel on PPC64 ELF.  No
      behavioral change intended.
      
      llvm-svn: 183841
      6207a4b7
    • Ulrich Weigand's avatar
      · 32d725b8
      Ulrich Weigand authored
      [MC/DWARF] Support .debug_frame / .debug_line code alignment factors
      
      I've been comparing the object file output of LLVM's integrated
      assembler against the external assembler on PowerPC, and one
      area where differences still remain are in DWARF sections.
      
      In particular, the GNU assembler generates .debug_frame and
      .debug_line sections using a code alignment factor of 4, since
      all PowerPC instructions have size 4 and must be aligned to a
      multiple of 4.  However, current MC code hard-codes a code
      alignment factor of 1.
      
      This patch changes this by adding a "minimum instruction alignment"
      data element to MCAsmInfo and using this as code alignment factor.
      
      This requires passing a MCContext into MCDwarfLineAddr::Encode
      and MCDwarfLineAddr::EncodeAdvanceLoc.  Note that one caller,
      MCDwarfLineAddr::Write, didn't actually have that information
      available.  However, it turns out that this routine is in fact
      never used in the whole code base, so the patch simply removes
      it.  If it turns out to be needed again at a later time, it
      could be re-added with an updated interface.
      
      llvm-svn: 183834
      32d725b8
    • Patrik Hagglund's avatar
      Fix gcc -flto build, by adding LLVM_ATTRIBUTE_USED to · 0cc888b7
      Patrik Hagglund authored
      LLVMX86CompilationCallback2, called from inline asm.
      
      llvm-svn: 183824
      0cc888b7
    • Eric Christopher's avatar
      Correct the def registers for the 8bit x86 divide instructions to · 5331f0ee
      Eric Christopher authored
      match the comments and what the instruction actually does. Noticed
      on inspection.
      
      llvm-svn: 183809
      5331f0ee
    • Eric Christopher's avatar
      Use the Copy we defined above here. · 8f6a083b
      Eric Christopher authored
      llvm-svn: 183808
      8f6a083b
    • Akira Hatanaka's avatar
      Fix CMakeLists. · f5288c26
      Akira Hatanaka authored
      llvm-svn: 183804
      f5288c26
    • Akira Hatanaka's avatar
      [mips] Add an IR transformation pass that optimizes calls to sqrt. · 5c50a16e
      Akira Hatanaka authored
      The pass emits a call to sqrt that has attribute "read-none". This call will be
      converted to an ISD::FSQRT node during DAG construction, which will turn into
      a mips native sqrt instruction.
       
      
      llvm-svn: 183802
      5c50a16e
    • JF Bastien's avatar
      ARM FastISel fix sext/zext fold · 3c6bb8e1
      JF Bastien authored
      Sign- and zero-extension folding was slightly incorrect because it wasn't checking that the shift on extensions was zero. Further, I recently added AND rd, rn, #255 as a form of 8-bit zero extension, and failed to add the folding code for it.
      
      This patch fixes both issues.
      
      This patch fixes both, and the test should remain the same:
        test/CodeGen/ARM/fast-isel-fold.ll
      
      llvm-svn: 183794
      3c6bb8e1
  8. Jun 11, 2013
Loading