summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/test/Transforms/InstCombine/2008-05-22-NegValVector.ll14
-rw-r--r--llvm/test/Transforms/InstCombine/apint-sub.ll21
-rw-r--r--llvm/test/Transforms/InstCombine/mul.ll66
-rw-r--r--llvm/test/Transforms/InstCombine/sub.ll21
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:%.*]]
OpenPOWER on IntegriCloud