From 1c44ebcf8645a68b3f01161ed94eea43bcd79aae Mon Sep 17 00:00:00 2001 From: Nick Lewycky Date: Wed, 20 Feb 2008 06:48:22 +0000 Subject: Add 'umax' similar to 'smax' SCEV. Closes PR2003. Parse reversed smax and umax as smin and umin and express them with negative or binary-not SCEVs (which are really just subtract under the hood). Parse 'xor %x, -1' as (-1 - %x). Remove dead code (ConstantInt::get always returns a ConstantInt). Don't use getIntegerSCEV(-1, Ty). The first value is an int, then it gets passed into a uint64_t. Instead, create the -1 directly from ConstantInt::getAllOnesValue(). llvm-svn: 47360 --- .../Analysis/ScalarEvolution/2007-08-06-Unsigned.ll | 2 +- llvm/test/Analysis/ScalarEvolution/2008-02-15-UMax.ll | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 llvm/test/Analysis/ScalarEvolution/2008-02-15-UMax.ll (limited to 'llvm/test/Analysis/ScalarEvolution') diff --git a/llvm/test/Analysis/ScalarEvolution/2007-08-06-Unsigned.ll b/llvm/test/Analysis/ScalarEvolution/2007-08-06-Unsigned.ll index e725852cea1..23ffc650b0d 100644 --- a/llvm/test/Analysis/ScalarEvolution/2007-08-06-Unsigned.ll +++ b/llvm/test/Analysis/ScalarEvolution/2007-08-06-Unsigned.ll @@ -1,4 +1,4 @@ -; RUN: llvm-as < %s | opt -scalar-evolution -analyze | grep {Loop bb: ( -1 + ( -1 \\* %x) + %y) iterations!} +; RUN: llvm-as < %s | opt -scalar-evolution -analyze | grep {Loop bb: ( -1 + ( -1 \\* %x) + (( 1 + %x) umax %y)) iterations!} ; PR1597 define i32 @f(i32 %x, i32 %y) { diff --git a/llvm/test/Analysis/ScalarEvolution/2008-02-15-UMax.ll b/llvm/test/Analysis/ScalarEvolution/2008-02-15-UMax.ll new file mode 100644 index 00000000000..0f977f804eb --- /dev/null +++ b/llvm/test/Analysis/ScalarEvolution/2008-02-15-UMax.ll @@ -0,0 +1,17 @@ +; RUN: llvm-as < %s | opt -analyze -scalar-evolution | grep umax +; PR2003 + +define i32 @foo(i32 %n) { +entry: + br label %header +header: + %i = phi i32 [ 100, %entry ], [ %i.inc, %next ] + %cond = icmp ult i32 %i, %n + br i1 %cond, label %next, label %return +next: + %i.inc = add i32 %i, 1 + br label %header +return: + ret i32 %i +} + -- cgit v1.2.3