diff options
-rw-r--r-- | llvm/test/Transforms/InstCombine/2008-05-22-NegValVector.ll | 14 | ||||
-rw-r--r-- | llvm/test/Transforms/InstCombine/apint-sub.ll | 21 | ||||
-rw-r--r-- | llvm/test/Transforms/InstCombine/mul.ll | 66 | ||||
-rw-r--r-- | llvm/test/Transforms/InstCombine/sub.ll | 21 |
4 files changed, 64 insertions, 58 deletions
diff --git a/llvm/test/Transforms/InstCombine/2008-05-22-NegValVector.ll b/llvm/test/Transforms/InstCombine/2008-05-22-NegValVector.ll deleted file mode 100644 index 58259be8bc9..00000000000 --- a/llvm/test/Transforms/InstCombine/2008-05-22-NegValVector.ll +++ /dev/null @@ -1,14 +0,0 @@ -; RUN: opt < %s -instcombine -S | not grep sub - -define <3 x i8> @f(<3 x i8> %a) { - %A = sub <3 x i8> zeroinitializer, %a - %B = mul <3 x i8> %A, <i8 5, i8 5, i8 5> - ret <3 x i8> %B -} - -define <3 x i4> @g(<3 x i4> %a) { - %A = sub <3 x i4> zeroinitializer, %a - %B = mul <3 x i4> %A, <i4 5, i4 5, i4 5> - ret <3 x i4> %B -} - diff --git a/llvm/test/Transforms/InstCombine/apint-sub.ll b/llvm/test/Transforms/InstCombine/apint-sub.ll index 1a4e62ff0d7..8d80f2c845b 100644 --- a/llvm/test/Transforms/InstCombine/apint-sub.ll +++ b/llvm/test/Transforms/InstCombine/apint-sub.ll @@ -87,27 +87,6 @@ define i42 @test9(i42 %A) { ret i42 %C } -define i124 @test10(i124 %A, i124 %B) { -; CHECK-LABEL: @test10( -; CHECK-NEXT: [[E:%.*]] = mul i124 %A, %B -; CHECK-NEXT: ret i124 [[E]] -; - %C = sub i124 0, %A - %D = sub i124 0, %B - %E = mul i124 %C, %D - ret i124 %E -} - -define i55 @test10a(i55 %A) { -; CHECK-LABEL: @test10a( -; CHECK-NEXT: [[E:%.*]] = mul i55 %A, -7 -; CHECK-NEXT: ret i55 [[E]] -; - %C = sub i55 0, %A - %E = mul i55 %C, 7 - ret i55 %E -} - define i1 @test11(i9 %A, i9 %B) { ; CHECK-LABEL: @test11( ; CHECK-NEXT: [[CD:%.*]] = icmp ne i9 %A, %B diff --git a/llvm/test/Transforms/InstCombine/mul.ll b/llvm/test/Transforms/InstCombine/mul.ll index 28e334866e6..788e55907a5 100644 --- a/llvm/test/Transforms/InstCombine/mul.ll +++ b/llvm/test/Transforms/InstCombine/mul.ll @@ -258,8 +258,19 @@ define i32 @test24(i32 %A) { ret i32 %C } -define i32 @test25(i32 %A, i32 %B) { -; CHECK-LABEL: @test25( +define i32 @neg_neg_mul(i32 %A, i32 %B) { +; CHECK-LABEL: @neg_neg_mul( +; CHECK-NEXT: [[E:%.*]] = mul i32 [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i32 [[E]] +; + %C = sub i32 0, %A + %D = sub i32 0, %B + %E = mul i32 %C, %D + ret i32 %E +} + +define i32 @neg_neg_mul_nsw(i32 %A, i32 %B) { +; CHECK-LABEL: @neg_neg_mul_nsw( ; CHECK-NEXT: [[E:%.*]] = mul nsw i32 [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i32 [[E]] ; @@ -269,6 +280,57 @@ define i32 @test25(i32 %A, i32 %B) { ret i32 %E } +define i124 @neg_neg_mul_apint(i124 %A, i124 %B) { +; CHECK-LABEL: @neg_neg_mul_apint( +; CHECK-NEXT: [[E:%.*]] = mul i124 [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i124 [[E]] +; + %C = sub i124 0, %A + %D = sub i124 0, %B + %E = mul i124 %C, %D + ret i124 %E +} + +define i32 @neg_mul_constant(i32 %A) { +; CHECK-LABEL: @neg_mul_constant( +; CHECK-NEXT: [[E:%.*]] = mul i32 [[A:%.*]], -7 +; CHECK-NEXT: ret i32 [[E]] +; + %C = sub i32 0, %A + %E = mul i32 %C, 7 + ret i32 %E +} + +define i55 @neg_mul_constant_apint(i55 %A) { +; CHECK-LABEL: @neg_mul_constant_apint( +; CHECK-NEXT: [[E:%.*]] = mul i55 [[A:%.*]], -7 +; CHECK-NEXT: ret i55 [[E]] +; + %C = sub i55 0, %A + %E = mul i55 %C, 7 + ret i55 %E +} + +define <3 x i8> @neg_mul_constant_vec(<3 x i8> %a) { +; CHECK-LABEL: @neg_mul_constant_vec( +; CHECK-NEXT: [[B:%.*]] = mul <3 x i8> [[A:%.*]], <i8 -5, i8 -5, i8 -5> +; CHECK-NEXT: ret <3 x i8> [[B]] +; + %A = sub <3 x i8> zeroinitializer, %a + %B = mul <3 x i8> %A, <i8 5, i8 5, i8 5> + ret <3 x i8> %B +} + +define <3 x i4> @neg_mul_constant_vec_weird(<3 x i4> %a) { +; CHECK-LABEL: @neg_mul_constant_vec_weird( +; CHECK-NEXT: [[B:%.*]] = mul <3 x i4> [[A:%.*]], <i4 -5, i4 -5, i4 -5> +; CHECK-NEXT: ret <3 x i4> [[B]] +; + %A = sub <3 x i4> zeroinitializer, %a + %B = mul <3 x i4> %A, <i4 5, i4 5, i4 5> + ret <3 x i4> %B +} + define i32 @test26(i32 %A, i32 %B) { ; CHECK-LABEL: @test26( ; CHECK-NEXT: [[D:%.*]] = shl nsw i32 [[A:%.*]], [[B:%.*]] diff --git a/llvm/test/Transforms/InstCombine/sub.ll b/llvm/test/Transforms/InstCombine/sub.ll index 5d6d5bec250..88a07a0b200 100644 --- a/llvm/test/Transforms/InstCombine/sub.ll +++ b/llvm/test/Transforms/InstCombine/sub.ll @@ -102,27 +102,6 @@ define i32 @test9(i32 %A) { ret i32 %C } -define i32 @test10(i32 %A, i32 %B) { -; CHECK-LABEL: @test10( -; CHECK-NEXT: [[E:%.*]] = mul i32 [[A:%.*]], [[B:%.*]] -; CHECK-NEXT: ret i32 [[E]] -; - %C = sub i32 0, %A - %D = sub i32 0, %B - %E = mul i32 %C, %D - ret i32 %E -} - -define i32 @test10a(i32 %A) { -; CHECK-LABEL: @test10a( -; CHECK-NEXT: [[E:%.*]] = mul i32 [[A:%.*]], -7 -; CHECK-NEXT: ret i32 [[E]] -; - %C = sub i32 0, %A - %E = mul i32 %C, 7 - ret i32 %E -} - define i1 @test11(i8 %A, i8 %B) { ; CHECK-LABEL: @test11( ; CHECK-NEXT: [[D:%.*]] = icmp ne i8 [[A:%.*]], [[B:%.*]] |