Skip to content
  1. Sep 21, 2012
  2. Sep 20, 2012
    • Bill Wendling's avatar
      Revert r164308 to fix buildbots. · c727bacb
      Bill Wendling authored
      llvm-svn: 164309
      c727bacb
    • Bill Wendling's avatar
    • Craig Topper's avatar
      Change enum type in a static table to uint8_t instead. Saves about 700 hundred... · 980739af
      Craig Topper authored
      Change enum type in a static table to uint8_t instead. Saves about 700 hundred bytes of static data. Change unsigned char in same table to uint8_t for explicitness.
      
      llvm-svn: 164285
      980739af
    • 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
  3. Sep 19, 2012
  4. Sep 18, 2012
  5. Sep 17, 2012
  6. Sep 16, 2012
  7. Sep 15, 2012
  8. Sep 14, 2012
    • Andrew Trick's avatar
      Implement getNumLDMAddresses and expose through ARMBaseInstrInfo. · 2ac6f7d6
      Andrew Trick authored
      llvm-svn: 163922
      2ac6f7d6
    • Andrew Trick's avatar
      Cortex-A9 instruction-level scheduling machine model. · 985dc0dd
      Andrew Trick authored
      This models the A9 processor at the level of instruction operands, as
      opposed to the itinerary, which models each operation at the level of
      pipeline stages.
      
      The two primary motivations are:
      
      1) Allow MachineScheduler to model A9 as an out-of-order processor. It
      can now distinguish between hazards that force interlocking vs.
      buffered resources.
      
      2) Reduce long-term maintenance by allowing the itinerary and target
      hooks to eventually be removed. Note that almost all of the complexity
      in the new model exists to model instruction variants, which the
      itinerary cannot handle. Instead the scheduler previously relied on
      processor-specific target hooks which are incomplete and buggy.
      
      llvm-svn: 163921
      985dc0dd
    • Sergei Larin's avatar
      DAG post-process for Hexagon MI scheduler · 2db64a70
      Sergei Larin authored
      This patch introduces a possibility for Hexagon MI scheduler
      to perform some target specific post- processing on the scheduling
      DAG prior to scheduling.
      
      llvm-svn: 163903
      2db64a70
Loading