Skip to content
  1. Dec 11, 2012
    • Eric Christopher's avatar
      Refactor out the abbreviation handling into a separate class that · c8a310ed
      Eric Christopher authored
      controls each of the abbreviation sets (only a single one at the
      moment) and computes offsets separately as well for each set
      of DIEs.
      
      No real function change, ordering of abbreviations for the skeleton
      CU changed but only because we're computing in a separate order. Fix
      the testcase not to care.
      
      llvm-svn: 169793
      c8a310ed
    • Evan Cheng's avatar
      Some enhancements for memcpy / memset inline expansion. · 79e2ca90
      Evan Cheng authored
      1. Teach it to use overlapping unaligned load / store to copy / set the trailing
         bytes. e.g. On 86, use two pairs of movups / movaps for 17 - 31 byte copies.
      2. Use f64 for memcpy / memset on targets where i64 is not legal but f64 is. e.g.
         x86 and ARM.
      3. When memcpy from a constant string, do *not* replace the load with a constant
         if it's not possible to materialize an integer immediate with a single
         instruction (required a new target hook: TLI.isIntImmLegal()).
      4. Use unaligned load / stores more aggressively if target hooks indicates they
         are "fast".
      5. Update ARM target hooks to use unaligned load / stores. e.g. vld1.8 / vst1.8.
         Also increase the threshold to something reasonable (8 for memset, 4 pairs
         for memcpy).
      
      This significantly improves Dhrystone, up to 50% on ARM iOS devices.
      
      rdar://12760078
      
      llvm-svn: 169791
      79e2ca90
  2. Dec 10, 2012
  3. Dec 09, 2012
  4. Dec 08, 2012
  5. Dec 07, 2012
    • Jakob Stoklund Olesen's avatar
      Add higher-level API for dealing with bundled MachineInstrs. · fead62d4
      Jakob Stoklund Olesen authored
      This is still a work in progress. The purpose is to make bundling and
      unbundling operations explicit, and to catch errors where bundles are
      broken or created inadvertently.
      
      The old IsInsideBundle flag is replaced by two MI flags: BundledPred
      which has the same meaning as IsInsideBundle, and BundledSucc which is
      set on instructions that are bundled with a successor. Having two flags
      provdes redundancy to detect when a bundle is inadvertently torn by a
      splice() or insert(), and it makes it possible to write bundle iterators
      that don't need to peek at adjacent instructions.
      
      The new flags can't be manipulated directly (once setIsInsideBundle is
      gone). Instead there are MI functions to make and break bundle bonds.
      
      The setIsInsideBundle function will be removed in a future commit. It
      should be replaced by bundleWithPred().
      
      llvm-svn: 169583
      fead62d4
  6. Dec 06, 2012
  7. Dec 05, 2012
  8. Dec 04, 2012
Loading