Skip to content

Files

Analysis

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Apr 25, 2014
Apr 15, 2014
Apr 15, 2014
Mar 5, 2014
Mar 5, 2014
Apr 15, 2014
Apr 15, 2014
Apr 18, 2014
Apr 22, 2014
Apr 25, 2014
Apr 22, 2014
Apr 15, 2014
Apr 15, 2014
Apr 21, 2014
Apr 21, 2014
Mar 9, 2014
Mar 17, 2014
Apr 15, 2014
Apr 22, 2014
Apr 22, 2014
Apr 22, 2014
Jan 13, 2014
Apr 15, 2014
Apr 22, 2014
Apr 22, 2014
Apr 22, 2014
Mar 4, 2014
Apr 15, 2014
Dec 12, 2011
Apr 26, 2014
Apr 22, 2014
Apr 15, 2014
Apr 15, 2014
Apr 15, 2014
Apr 15, 2014
Apr 15, 2014
Apr 21, 2014
Jan 24, 2010
Apr 15, 2014
Apr 22, 2014
Apr 22, 2014
Mar 18, 2014
Apr 15, 2014
Apr 15, 2014
Apr 22, 2014
Mar 9, 2014
Apr 26, 2010
Apr 22, 2014
Apr 22, 2014
Apr 15, 2014
Apr 22, 2014
Apr 15, 2014
Apr 15, 2014
Apr 15, 2014
Apr 22, 2014
Apr 22, 2014
Jan 9, 2014
Apr 17, 2014
Apr 15, 2014
Analysis Opportunities:

//===---------------------------------------------------------------------===//

In test/Transforms/LoopStrengthReduce/quadradic-exit-value.ll, the
ScalarEvolution expression for %r is this:

  {1,+,3,+,2}<loop>

Outside the loop, this could be evaluated simply as (%n * %n), however
ScalarEvolution currently evaluates it as

  (-2 + (2 * (trunc i65 (((zext i64 (-2 + %n) to i65) * (zext i64 (-1 + %n) to i65)) /u 2) to i64)) + (3 * %n))

In addition to being much more complicated, it involves i65 arithmetic,
which is very inefficient when expanded into code.

//===---------------------------------------------------------------------===//

In formatValue in test/CodeGen/X86/lsr-delayed-fold.ll,

ScalarEvolution is forming this expression:

((trunc i64 (-1 * %arg5) to i32) + (trunc i64 %arg5 to i32) + (-1 * (trunc i64 undef to i32)))

This could be folded to

(-1 * (trunc i64 undef to i32))

//===---------------------------------------------------------------------===//