Skip to content
  1. Feb 04, 2011
  2. Feb 02, 2011
  3. Feb 01, 2011
  4. Jan 31, 2011
  5. Jan 30, 2011
    • Benjamin Kramer's avatar
      Teach DAGCombine to fold fold (sra (trunc (sr x, c1)), c2) -> (trunc (sra x,... · 946e1522
      Benjamin Kramer authored
      Teach DAGCombine to fold fold (sra (trunc (sr x, c1)), c2) -> (trunc (sra x, c1+c2) when c1 equals the amount of bits that are truncated off.
      
      This happens all the time when a smul is promoted to a larger type.
      
      On x86-64 we now compile "int test(int x) { return x/10; }" into
        movslq  %edi, %rax
        imulq $1717986919, %rax, %rax
        movq  %rax, %rcx
        shrq  $63, %rcx
        sarq  $34, %rax <- used to be "shrq $32, %rax; sarl $2, %eax"
        addl  %ecx, %eax
      
      This fires 96 times in gcc.c on x86-64.
      
      llvm-svn: 124559
      946e1522
  6. Jan 29, 2011
  7. Jan 28, 2011
  8. Jan 27, 2011
  9. Jan 26, 2011
  10. Jan 25, 2011
  11. Jan 24, 2011
  12. Jan 23, 2011
    • Ted Kremenek's avatar
      Null initialize a few variables flagged by · 3c4408ce
      Ted Kremenek authored
      clang's -Wuninitialized-experimental warning.
      While these don't look like real bugs, clang's
      -Wuninitialized-experimental analysis is stricter
      than GCC's, and these fixes have the benefit
      of being general nice cleanups.
      
      llvm-svn: 124073
      3c4408ce
  13. Jan 21, 2011
    • Andrew Trick's avatar
      Enable support for precise scheduling of the instruction selection · bd428ec5
      Andrew Trick authored
      DAG. Disable using "-disable-sched-cycles".
      
      For ARM, this enables a framework for modeling the cpu pipeline and
      counting stalls. It also activates several heuristics to drive
      scheduling based on the model. Scheduling is inherently imprecise at
      this stage, and until spilling is improved it may defeat attempts to
      schedule. However, this framework provides greater control over
      tuning codegen.
      
      Although the flag is not target-specific, it should have very little
      affect on the default scheduler used by x86. The only two changes that
      affect x86 are:
      - scheduling a high-latency operation bumps the current cycle so independent
        operations can have their latency covered. i.e. two independent 4
        cycle operations can produce results in 4 cycles, not 8 cycles.
      - Two operations with equal register pressure impact and no
        latency-based stalls on their uses will be prioritized by depth before height
        (height is irrelevant if no stalls occur in the schedule below this point).
      
      llvm-svn: 123971
      bd428ec5
    • Andrew Trick's avatar
      Convert -enable-sched-cycles and -enable-sched-hazard to -disable · 47ff14b0
      Andrew Trick authored
      flags. They are still not enable in this revision.
      
      Added TargetInstrInfo::isZeroCost() to fix a fundamental problem with
      the scheduler's model of operand latency in the selection DAG.
      
      Generalized unit tests to work with sched-cycles.
      
      llvm-svn: 123969
      47ff14b0
  14. Jan 20, 2011
  15. Jan 18, 2011
  16. Jan 17, 2011
Loading