Skip to content
  1. Sep 26, 2012
  2. Sep 25, 2012
  3. Sep 24, 2012
  4. Sep 22, 2012
  5. Sep 21, 2012
  6. Sep 20, 2012
    • Michael Liao's avatar
      Re-work X86 code generation of atomic ops with spin-loop · 3237662b
      Michael Liao authored
      - Rewrite/merge pseudo-atomic instruction emitters to address the
        following issue:
        * Reduce one unnecessary load in spin-loop
      
          previously the spin-loop looks like
      
              thisMBB:
              newMBB:
                ld  t1 = [bitinstr.addr]
                op  t2 = t1, [bitinstr.val]
                not t3 = t2  (if Invert)
                mov EAX = t1
                lcs dest = [bitinstr.addr], t3  [EAX is implicit]
                bz  newMBB
                fallthrough -->nextMBB
      
          the 'ld' at the beginning of newMBB should be lift out of the loop
          as lcs (or CMPXCHG on x86) will load the current memory value into
          EAX. This loop is refined as:
      
              thisMBB:
                EAX = LOAD [MI.addr]
              mainMBB:
                t1 = OP [MI.val], EAX
                LCMPXCHG [MI.addr], t1, [EAX is implicitly used & defined]
                JNE mainMBB
              sinkMBB:
      
        * Remove immopc as, so far, all pseudo-atomic instructions has
          all-register form only, there is no immedidate operand.
      
        * Remove unnecessary attributes/modifiers in pseudo-atomic instruction
          td
      
        * Fix issues in PR13458
      
      - Add comprehensive tests on atomic ops on various data types.
        NOTE: Some of them are turned off due to missing functionality.
      
      - Revise tests due to the new spin-loop generated.
      
      llvm-svn: 164281
      3237662b
  7. Sep 19, 2012
  8. Sep 18, 2012
  9. Sep 17, 2012
  10. Sep 16, 2012
  11. Sep 15, 2012
  12. Sep 14, 2012
    • Dmitri Gribenko's avatar
      Fix Doxygen issues: · 5485acd4
      Dmitri Gribenko authored
      * wrap code blocks in \code ... \endcode;
      * refer to parameter names in paragraphs correctly (\arg is not what most
        people want -- it starts a new paragraph);
      * use \param instead of \arg to document parameters in order to be consistent
        with the rest of the codebase.
      
      llvm-svn: 163902
      5485acd4
  13. Sep 13, 2012
  14. Sep 12, 2012
  15. Sep 11, 2012
Loading