summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms
diff options
context:
space:
mode:
authorSanjay Patel <spatel@rotateright.com>2016-09-15 17:54:47 +0000
committerSanjay Patel <spatel@rotateright.com>2016-09-15 17:54:47 +0000
commit514068397ec030ff7f25a38e601d120673984472 (patch)
tree95ca1748a269bf49e76f7b7e0053d6e5bcb7318a /llvm/test/Transforms
parentf7518498ffa4064b548aa924a6ce4fa6d9378645 (diff)
downloadbcm5719-llvm-514068397ec030ff7f25a38e601d120673984472.tar.gz
bcm5719-llvm-514068397ec030ff7f25a38e601d120673984472.zip
[InstCombine] add vector tests for icmp (sub nsw)
llvm-svn: 281630
Diffstat (limited to 'llvm/test/Transforms')
-rw-r--r--llvm/test/Transforms/InstCombine/icmp.ll44
1 files changed, 44 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/icmp.ll b/llvm/test/Transforms/InstCombine/icmp.ll
index b8bd0c05276..b315c03c1f5 100644
--- a/llvm/test/Transforms/InstCombine/icmp.ll
+++ b/llvm/test/Transforms/InstCombine/icmp.ll
@@ -2313,6 +2313,17 @@ define i1 @f1(i64 %a, i64 %b) {
ret i1 %v
}
+define <2 x i1> @f1_vec(<2 x i64> %a, <2 x i64> %b) {
+; CHECK-LABEL: @f1_vec(
+; CHECK-NEXT: [[T:%.*]] = sub nsw <2 x i64> %a, %b
+; CHECK-NEXT: [[V:%.*]] = icmp sgt <2 x i64> [[T]], <i64 -1, i64 -1>
+; CHECK-NEXT: ret <2 x i1> [[V]]
+;
+ %t = sub nsw <2 x i64> %a, %b
+ %v = icmp sgt <2 x i64> %t, <i64 -1, i64 -1>
+ ret <2 x i1> %v
+}
+
define i1 @f2(i64 %a, i64 %b) {
; CHECK-LABEL: @f2(
; CHECK-NEXT: [[V:%.*]] = icmp sgt i64 %a, %b
@@ -2323,6 +2334,17 @@ define i1 @f2(i64 %a, i64 %b) {
ret i1 %v
}
+define <2 x i1> @f2_vec(<2 x i64> %a, <2 x i64> %b) {
+; CHECK-LABEL: @f2_vec(
+; CHECK-NEXT: [[T:%.*]] = sub nsw <2 x i64> %a, %b
+; CHECK-NEXT: [[V:%.*]] = icmp sgt <2 x i64> [[T]], zeroinitializer
+; CHECK-NEXT: ret <2 x i1> [[V]]
+;
+ %t = sub nsw <2 x i64> %a, %b
+ %v = icmp sgt <2 x i64> %t, zeroinitializer
+ ret <2 x i1> %v
+}
+
define i1 @f3(i64 %a, i64 %b) {
; CHECK-LABEL: @f3(
; CHECK-NEXT: [[V:%.*]] = icmp slt i64 %a, %b
@@ -2333,6 +2355,17 @@ define i1 @f3(i64 %a, i64 %b) {
ret i1 %v
}
+define <2 x i1> @f3_vec(<2 x i64> %a, <2 x i64> %b) {
+; CHECK-LABEL: @f3_vec(
+; CHECK-NEXT: [[T:%.*]] = sub nsw <2 x i64> %a, %b
+; CHECK-NEXT: [[V:%.*]] = icmp slt <2 x i64> [[T]], zeroinitializer
+; CHECK-NEXT: ret <2 x i1> [[V]]
+;
+ %t = sub nsw <2 x i64> %a, %b
+ %v = icmp slt <2 x i64> %t, zeroinitializer
+ ret <2 x i1> %v
+}
+
define i1 @f4(i64 %a, i64 %b) {
; CHECK-LABEL: @f4(
; CHECK-NEXT: [[V:%.*]] = icmp sle i64 %a, %b
@@ -2343,6 +2376,17 @@ define i1 @f4(i64 %a, i64 %b) {
ret i1 %v
}
+define <2 x i1> @f4_vec(<2 x i64> %a, <2 x i64> %b) {
+; CHECK-LABEL: @f4_vec(
+; CHECK-NEXT: [[T:%.*]] = sub nsw <2 x i64> %a, %b
+; CHECK-NEXT: [[V:%.*]] = icmp slt <2 x i64> [[T]], <i64 1, i64 1>
+; CHECK-NEXT: ret <2 x i1> [[V]]
+;
+ %t = sub nsw <2 x i64> %a, %b
+ %v = icmp slt <2 x i64> %t, <i64 1, i64 1>
+ ret <2 x i1> %v
+}
+
define i32 @f5(i8 %a, i8 %b) {
; CHECK-LABEL: @f5(
; CHECK-NEXT: [[CONV:%.*]] = zext i8 %a to i32
OpenPOWER on IntegriCloud