From: Chris Lattner Date: Sun, 6 Feb 2011 21:59:10 +0000 (+0000) Subject: rename test. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=c35a44d3d73a429e59fb3044ee723db0511862f2;p=oota-llvm.git rename test. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124993 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/Transforms/InstSimplify/2010-12-20-Reassociate.ll b/test/Transforms/InstSimplify/2010-12-20-Reassociate.ll deleted file mode 100644 index 928442ac56c..00000000000 --- a/test/Transforms/InstSimplify/2010-12-20-Reassociate.ll +++ /dev/null @@ -1,166 +0,0 @@ -; RUN: opt < %s -instsimplify -S | FileCheck %s - -define i32 @add1(i32 %x) { -; CHECK: @add1 -; (X + -1) + 1 -> X - %l = add i32 %x, -1 - %r = add i32 %l, 1 - ret i32 %r -; CHECK: ret i32 %x -} - -define i32 @and1(i32 %x, i32 %y) { -; CHECK: @and1 -; (X & Y) & X -> X & Y - %l = and i32 %x, %y - %r = and i32 %l, %x - ret i32 %r -; CHECK: ret i32 %l -} - -define i32 @and2(i32 %x, i32 %y) { -; CHECK: @and2 -; X & (X & Y) -> X & Y - %r = and i32 %x, %y - %l = and i32 %x, %r - ret i32 %l -; CHECK: ret i32 %r -} - -define i32 @or1(i32 %x, i32 %y) { -; CHECK: @or1 -; (X | Y) | X -> X | Y - %l = or i32 %x, %y - %r = or i32 %l, %x - ret i32 %r -; CHECK: ret i32 %l -} - -define i32 @or2(i32 %x, i32 %y) { -; CHECK: @or2 -; X | (X | Y) -> X | Y - %r = or i32 %x, %y - %l = or i32 %x, %r - ret i32 %l -; CHECK: ret i32 %r -} - -define i32 @xor1(i32 %x, i32 %y) { -; CHECK: @xor1 -; (X ^ Y) ^ X = Y - %l = xor i32 %x, %y - %r = xor i32 %l, %x - ret i32 %r -; CHECK: ret i32 %y -} - -define i32 @xor2(i32 %x, i32 %y) { -; CHECK: @xor2 -; X ^ (X ^ Y) = Y - %r = xor i32 %x, %y - %l = xor i32 %x, %r - ret i32 %l -; CHECK: ret i32 %y -} - -define i32 @sub1(i32 %x, i32 %y) { -; CHECK: @sub1 - %d = sub i32 %x, %y - %r = sub i32 %x, %d - ret i32 %r -; CHECK: ret i32 %y -} - -define i32 @sub2(i32 %x) { -; CHECK: @sub2 -; X - (X + 1) -> -1 - %xp1 = add i32 %x, 1 - %r = sub i32 %x, %xp1 - ret i32 %r -; CHECK: ret i32 -1 -} - -define i32 @sub3(i32 %x, i32 %y) { -; CHECK: @sub3 -; ((X + 1) + Y) - (Y + 1) -> X - %xp1 = add i32 %x, 1 - %lhs = add i32 %xp1, %y - %rhs = add i32 %y, 1 - %r = sub i32 %lhs, %rhs - ret i32 %r -; CHECK: ret i32 %x -} - -define i32 @sdiv1(i32 %x, i32 %y) { -; CHECK: @sdiv1 -; (no overflow X * Y) / Y -> X - %mul = mul nsw i32 %x, %y - %r = sdiv i32 %mul, %y - ret i32 %r -; CHECK: ret i32 %x -} - -define i32 @sdiv2(i32 %x, i32 %y) { -; CHECK: @sdiv2 -; (((X / Y) * Y) / Y) -> X / Y - %div = sdiv i32 %x, %y - %mul = mul i32 %div, %y - %r = sdiv i32 %mul, %y - ret i32 %r -; CHECK: ret i32 %div -} - -define i32 @sdiv3(i32 %x, i32 %y) { -; CHECK: @sdiv3 -; (X rem Y) / Y -> 0 - %rem = srem i32 %x, %y - %div = sdiv i32 %rem, %y - ret i32 %div -; CHECK: ret i32 0 -} - -define i32 @sdiv4(i32 %x, i32 %y) { -; CHECK: @sdiv4 -; (X / Y) * Y -> X if the division is exact - %div = sdiv exact i32 %x, %y - %mul = mul i32 %div, %y - ret i32 %mul -; CHECK: ret i32 %x -} - -define i32 @sdiv5(i32 %x, i32 %y) { -; CHECK: @sdiv5 -; Y * (X / Y) -> X if the division is exact - %div = sdiv exact i32 %x, %y - %mul = mul i32 %y, %div - ret i32 %mul -; CHECK: ret i32 %x -} - -define i32 @udiv1(i32 %x, i32 %y) { -; CHECK: @udiv1 -; (no overflow X * Y) / Y -> X - %mul = mul nuw i32 %x, %y - %r = udiv i32 %mul, %y - ret i32 %r -; CHECK: ret i32 %x -} - -define i32 @udiv2(i32 %x, i32 %y) { -; CHECK: @udiv2 -; (((X / Y) * Y) / Y) -> X / Y - %div = udiv i32 %x, %y - %mul = mul i32 %div, %y - %r = udiv i32 %mul, %y - ret i32 %r -; CHECK: ret i32 %div -} - -define i32 @udiv3(i32 %x, i32 %y) { -; CHECK: @udiv3 -; (X rem Y) / Y -> 0 - %rem = urem i32 %x, %y - %div = udiv i32 %rem, %y - ret i32 %div -; CHECK: ret i32 0 -} diff --git a/test/Transforms/InstSimplify/reassociate.ll b/test/Transforms/InstSimplify/reassociate.ll new file mode 100644 index 00000000000..928442ac56c --- /dev/null +++ b/test/Transforms/InstSimplify/reassociate.ll @@ -0,0 +1,166 @@ +; RUN: opt < %s -instsimplify -S | FileCheck %s + +define i32 @add1(i32 %x) { +; CHECK: @add1 +; (X + -1) + 1 -> X + %l = add i32 %x, -1 + %r = add i32 %l, 1 + ret i32 %r +; CHECK: ret i32 %x +} + +define i32 @and1(i32 %x, i32 %y) { +; CHECK: @and1 +; (X & Y) & X -> X & Y + %l = and i32 %x, %y + %r = and i32 %l, %x + ret i32 %r +; CHECK: ret i32 %l +} + +define i32 @and2(i32 %x, i32 %y) { +; CHECK: @and2 +; X & (X & Y) -> X & Y + %r = and i32 %x, %y + %l = and i32 %x, %r + ret i32 %l +; CHECK: ret i32 %r +} + +define i32 @or1(i32 %x, i32 %y) { +; CHECK: @or1 +; (X | Y) | X -> X | Y + %l = or i32 %x, %y + %r = or i32 %l, %x + ret i32 %r +; CHECK: ret i32 %l +} + +define i32 @or2(i32 %x, i32 %y) { +; CHECK: @or2 +; X | (X | Y) -> X | Y + %r = or i32 %x, %y + %l = or i32 %x, %r + ret i32 %l +; CHECK: ret i32 %r +} + +define i32 @xor1(i32 %x, i32 %y) { +; CHECK: @xor1 +; (X ^ Y) ^ X = Y + %l = xor i32 %x, %y + %r = xor i32 %l, %x + ret i32 %r +; CHECK: ret i32 %y +} + +define i32 @xor2(i32 %x, i32 %y) { +; CHECK: @xor2 +; X ^ (X ^ Y) = Y + %r = xor i32 %x, %y + %l = xor i32 %x, %r + ret i32 %l +; CHECK: ret i32 %y +} + +define i32 @sub1(i32 %x, i32 %y) { +; CHECK: @sub1 + %d = sub i32 %x, %y + %r = sub i32 %x, %d + ret i32 %r +; CHECK: ret i32 %y +} + +define i32 @sub2(i32 %x) { +; CHECK: @sub2 +; X - (X + 1) -> -1 + %xp1 = add i32 %x, 1 + %r = sub i32 %x, %xp1 + ret i32 %r +; CHECK: ret i32 -1 +} + +define i32 @sub3(i32 %x, i32 %y) { +; CHECK: @sub3 +; ((X + 1) + Y) - (Y + 1) -> X + %xp1 = add i32 %x, 1 + %lhs = add i32 %xp1, %y + %rhs = add i32 %y, 1 + %r = sub i32 %lhs, %rhs + ret i32 %r +; CHECK: ret i32 %x +} + +define i32 @sdiv1(i32 %x, i32 %y) { +; CHECK: @sdiv1 +; (no overflow X * Y) / Y -> X + %mul = mul nsw i32 %x, %y + %r = sdiv i32 %mul, %y + ret i32 %r +; CHECK: ret i32 %x +} + +define i32 @sdiv2(i32 %x, i32 %y) { +; CHECK: @sdiv2 +; (((X / Y) * Y) / Y) -> X / Y + %div = sdiv i32 %x, %y + %mul = mul i32 %div, %y + %r = sdiv i32 %mul, %y + ret i32 %r +; CHECK: ret i32 %div +} + +define i32 @sdiv3(i32 %x, i32 %y) { +; CHECK: @sdiv3 +; (X rem Y) / Y -> 0 + %rem = srem i32 %x, %y + %div = sdiv i32 %rem, %y + ret i32 %div +; CHECK: ret i32 0 +} + +define i32 @sdiv4(i32 %x, i32 %y) { +; CHECK: @sdiv4 +; (X / Y) * Y -> X if the division is exact + %div = sdiv exact i32 %x, %y + %mul = mul i32 %div, %y + ret i32 %mul +; CHECK: ret i32 %x +} + +define i32 @sdiv5(i32 %x, i32 %y) { +; CHECK: @sdiv5 +; Y * (X / Y) -> X if the division is exact + %div = sdiv exact i32 %x, %y + %mul = mul i32 %y, %div + ret i32 %mul +; CHECK: ret i32 %x +} + +define i32 @udiv1(i32 %x, i32 %y) { +; CHECK: @udiv1 +; (no overflow X * Y) / Y -> X + %mul = mul nuw i32 %x, %y + %r = udiv i32 %mul, %y + ret i32 %r +; CHECK: ret i32 %x +} + +define i32 @udiv2(i32 %x, i32 %y) { +; CHECK: @udiv2 +; (((X / Y) * Y) / Y) -> X / Y + %div = udiv i32 %x, %y + %mul = mul i32 %div, %y + %r = udiv i32 %mul, %y + ret i32 %r +; CHECK: ret i32 %div +} + +define i32 @udiv3(i32 %x, i32 %y) { +; CHECK: @udiv3 +; (X rem Y) / Y -> 0 + %rem = urem i32 %x, %y + %div = udiv i32 %rem, %y + ret i32 %div +; CHECK: ret i32 0 +}