X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=test%2FTransforms%2FReassociate%2Fbasictest.ll;h=086474066c56154ba2317a5629bb5a7c3ff28ce2;hb=daf97333697e1d243e531f4be648b1640d6a58bb;hp=0f137dc8add9db029fcecb63149cc611b5046550;hpb=35239934517c6fcd52e3e965f40e03f74aa4d11d;p=oota-llvm.git diff --git a/test/Transforms/Reassociate/basictest.ll b/test/Transforms/Reassociate/basictest.ll index 0f137dc8add..086474066c5 100644 --- a/test/Transforms/Reassociate/basictest.ll +++ b/test/Transforms/Reassociate/basictest.ll @@ -179,3 +179,38 @@ define i32 @test12(i32 %X) { ; CHECK-NEXT: ret i32 } +define i32 @test13(i32 %X1, i32 %X2, i32 %X3) { + %A = sub i32 0, %X1 + %B = mul i32 %A, %X2 ; -X1*X2 + %C = mul i32 %X1, %X3 ; X1*X3 + %D = add i32 %B, %C ; -X1*X2 + X1*X3 -> X1*(X3-X2) + ret i32 %D +; CHECK: @test13 +; CHECK-NEXT: sub i32 %X3, %X2 +; CHECK-NEXT: mul i32 {{.*}}, %X1 +; CHECK-NEXT: ret i32 +} + +; PR5359 +define i32 @test14(i32 %X1, i32 %X2) { + %B = mul i32 %X1, 47 ; X1*47 + %C = mul i32 %X2, -47 ; X2*-47 + %D = add i32 %B, %C ; X1*47 + X2*-47 -> 47*(X1-X2) + ret i32 %D +; CHECK: @test14 +; CHECK-NEXT: sub i32 %X1, %X2 +; CHECK-NEXT: mul i32 {{.*}}, 47 +; CHECK-NEXT: ret i32 +} + +; Do not reassociate expressions of type i1 +define i32 @test15(i32 %X1, i32 %X2, i32 %X3) { + %A = icmp ne i32 %X1, 0 + %B = icmp slt i32 %X2, %X3 + %C = and i1 %A, %B + %D = select i1 %C, i32 %X1, i32 0 + ret i32 %D +; CHECK: @test15 +; CHECK: and i1 %A, %B +} +