Skip to content
  1. Jul 28, 2013
  2. May 07, 2013
  3. May 03, 2013
  4. Apr 25, 2013
  5. Apr 03, 2013
  6. Mar 29, 2013
  7. Mar 28, 2013
  8. Mar 27, 2013
    • Preston Gurd's avatar
      · 663e6f95
      Preston Gurd authored
      For the current Atom processor, the fastest way to handle a call
      indirect through a memory address is to load the memory address into
      a register and then call indirect through the register.
      
      This patch implements this improvement by modifying SelectionDAG to
      force a function address which is a memory reference to be loaded
      into a virtual register.
      
      Patch by Sriram Murali.
      
      llvm-svn: 178171
      663e6f95
  9. Mar 26, 2013
  10. Feb 27, 2013
  11. Feb 16, 2013
  12. Feb 15, 2013
  13. Feb 14, 2013
  14. Jan 30, 2013
  15. Jan 29, 2013
    • Evan Cheng's avatar
      Teach SDISel to combine fsin / fcos into a fsincos node if the following · 0e88c7d8
      Evan Cheng authored
      conditions are met:
      1. They share the same operand and are in the same BB.
      2. Both outputs are used.
      3. The target has a native instruction that maps to ISD::FSINCOS node or
         the target provides a sincos library call.
      
      Implemented the generic optimization in sdisel and enabled it for
      Mac OSX. Also added an additional optimization for x86_64 Mac OSX by
      using an alternative entry point __sincos_stret which returns the two
      results in xmm0 / xmm1.
      
      rdar://13087969
      PR13204
      
      llvm-svn: 173755
      0e88c7d8
  16. Jan 08, 2013
    • Preston Gurd's avatar
      Pad Short Functions for Intel Atom · a01daace
      Preston Gurd authored
      The current Intel Atom microarchitecture has a feature whereby
      when a function returns early then it is slightly faster to execute
      a sequence of NOP instructions to wait until the return address is ready,
      as opposed to simply stalling on the ret instruction until
      the return address is ready.
      
      When compiling for X86 Atom only, this patch will run a pass,
      called "X86PadShortFunction" which will add NOP instructions where less
      than four cycles elapse between function entry and return.
      
      It includes tests.
      
      This patch has been updated to address Nadav's review comments
      - Optimize only at >= O1 and don't do optimization if -Os is set
      - Stores MachineBasicBlock* instead of BBNum
      - Uses DenseMap instead of std::map
      - Fixes placement of braces
      
      Patch by Andy Zhang.
      
      llvm-svn: 171879
      a01daace
  17. Jan 05, 2013
    • Nadav Rotem's avatar
      Revert revision 171524. Original message: · 478b6a47
      Nadav Rotem authored
      URL: http://llvm.org/viewvc/llvm-project?rev=171524&view=rev
      Log:
      The current Intel Atom microarchitecture has a feature whereby when a function
      returns early then it is slightly faster to execute a sequence of NOP
      instructions to wait until the return address is ready,
      as opposed to simply stalling on the ret instruction
      until the return address is ready.
      
      When compiling for X86 Atom only, this patch will run a pass, called
      "X86PadShortFunction" which will add NOP instructions where less than four
      cycles elapse between function entry and return.
      
      It includes tests.
      
      Patch by Andy Zhang.
      
      llvm-svn: 171603
      478b6a47
  18. Jan 04, 2013
    • Preston Gurd's avatar
      The current Intel Atom microarchitecture has a feature whereby when a function · e36b685a
      Preston Gurd authored
      returns early then it is slightly faster to execute a sequence of NOP
      instructions to wait until the return address is ready,
      as opposed to simply stalling on the ret instruction
      until the return address is ready.
      
      When compiling for X86 Atom only, this patch will run a pass, called
      "X86PadShortFunction" which will add NOP instructions where less than four
      cycles elapse between function entry and return.
      
      It includes tests.
      
      Patch by Andy Zhang.
      
      llvm-svn: 171524
      e36b685a
  19. Jan 02, 2013
    • Chandler Carruth's avatar
      Move all of the header files which are involved in modelling the LLVM IR · 9fb823bb
      Chandler Carruth authored
      into their new header subdirectory: include/llvm/IR. This matches the
      directory structure of lib, and begins to correct a long standing point
      of file layout clutter in LLVM.
      
      There are still more header files to move here, but I wanted to handle
      them in separate commits to make tracking what files make sense at each
      layer easier.
      
      The only really questionable files here are the target intrinsic
      tablegen files. But that's a battle I'd rather not fight today.
      
      I've updated both CMake and Makefile build systems (I think, and my
      tests think, but I may have missed something).
      
      I've also re-sorted the includes throughout the project. I'll be
      committing updates to Clang, DragonEgg, and Polly momentarily.
      
      llvm-svn: 171366
      9fb823bb
  20. Dec 10, 2012
    • Chandler Carruth's avatar
      Fix a typo in my previous commit -- bloomfield is 0x1A not 0x2A. · 17f25c4e
      Chandler Carruth authored
      Thanks to the PaX folks for noticing in review! We need some tests here,
      any sugestions welcome...
      
      llvm-svn: 169739
      17f25c4e
    • Chandler Carruth's avatar
      Address a FIXME and update the fast unaligned memory feature for newer · 0f585581
      Chandler Carruth authored
      Intel chips.
      
      The model number rules were determined by inspecting Intel's
      documentation for their newer chip model numbers. My understanding is
      that all of the newer Intel chips have fast unaligned memory access, but
      if anyone is concerned about a particular chip, just shout.
      
      No tests updated; it's not clear we have dedicated tests for the chips'
      various features, but if anyone would like tests (or can point me at
      some existing ones), I'm happy to oblige.
      
      llvm-svn: 169730
      0f585581
  21. Dec 03, 2012
    • Chandler Carruth's avatar
      Use the new script to sort the includes of every file under lib. · ed0881b2
      Chandler Carruth authored
      Sooooo many of these had incorrect or strange main module includes.
      I have manually inspected all of these, and fixed the main module
      include to be the nearest plausible thing I could find. If you own or
      care about any of these source files, I encourage you to take some time
      and check that these edits were sensible. I can't have broken anything
      (I strictly added headers, and reordered them, never removed), but they
      may not be the headers you'd really like to identify as containing the
      API being implemented.
      
      Many forward declarations and missing includes were added to a header
      files to allow them to parse cleanly when included first. The main
      module rule does in fact have its merits. =]
      
      llvm-svn: 169131
      ed0881b2
  22. Nov 09, 2012
  23. Nov 08, 2012
    • Michael Liao's avatar
      Add support of RTM from TSX extension · 73cffddb
      Michael Liao authored
      - Add RTM code generation support throught 3 X86 intrinsics:
        xbegin()/xend() to start/end a transaction region, and xabort() to abort a
        tranaction region
      
      llvm-svn: 167573
      73cffddb
  24. Oct 08, 2012
  25. Oct 03, 2012
  26. Sep 04, 2012
    • 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
  27. Aug 13, 2012
  28. Aug 11, 2012
  29. Aug 07, 2012
    • Andrew Trick's avatar
      Allow x86 subtargets to use the GenericModel defined in X86Schedule.td. · e0c83b1f
      Andrew Trick authored
      This allows codegen passes to query properties like
      InstrItins->SchedModel->IssueWidth. It also ensure's that
      computeOperandLatency returns the X86 defaults for loads and "high
      latency ops". This should have no significant impact on existing
      schedulers because X86 defaults happen to be the same as global
      defaults.
      
      llvm-svn: 161370
      e0c83b1f
  30. Aug 01, 2012
  31. Jul 19, 2012
  32. Jul 18, 2012
    • Preston Gurd's avatar
      This patch fixes 8 out of 20 unexpected failures in "make check" · f0a48ec8
      Preston Gurd authored
      when run on an Intel Atom processor. The failures have arisen due
      to changes elsewhere in the trunk over the past 8 weeks or so.
      
      These failures were not detected by the Atom buildbot because the
      CPU on the Atom buildbot was not being detected as an Atom CPU.
      The fix for this problem is in Host.cpp and X86Subtarget.cpp, but
      shall remain commented out until the current set of Atom test failures
      are fixed.
      
      Patch by Andy Zhang and Tyler Nowicki!
      
      llvm-svn: 160451
      f0a48ec8
  33. Jun 03, 2012
  34. Jun 01, 2012
Loading