From b11588b18e8e0844e035d1bf5656b7f7b7bfb959 Mon Sep 17 00:00:00 2001 From: Sanjay Patel Date: Mon, 19 Oct 2020 17:50:43 -0400 Subject: [PATCH] [InstSimplify] add vector icmp tests; NFC --- llvm/test/Transforms/InstSimplify/compare.ll | 124 +++++++++++++++++++++------ 1 file changed, 98 insertions(+), 26 deletions(-) diff --git a/llvm/test/Transforms/InstSimplify/compare.ll b/llvm/test/Transforms/InstSimplify/compare.ll index 557f2bb..e2fcaee 100644 --- a/llvm/test/Transforms/InstSimplify/compare.ll +++ b/llvm/test/Transforms/InstSimplify/compare.ll @@ -1121,66 +1121,138 @@ define i1 @compare_always_true_slt(i16 %a) { ; CHECK-LABEL: @compare_always_true_slt( ; CHECK-NEXT: ret i1 true ; - %1 = zext i16 %a to i32 - %2 = sub nsw i32 0, %1 - %3 = icmp slt i32 %2, 1 - ret i1 %3 + %t1 = zext i16 %a to i32 + %t2 = sub i32 0, %t1 + %t3 = icmp slt i32 %t2, 1 + ret i1 %t3 +} +define <2 x i1> @compare_always_true_slt_splat(<2 x i16> %a) { +; CHECK-LABEL: @compare_always_true_slt_splat( +; CHECK-NEXT: [[T1:%.*]] = zext <2 x i16> [[A:%.*]] to <2 x i32> +; CHECK-NEXT: [[T2:%.*]] = sub <2 x i32> zeroinitializer, [[T1]] +; CHECK-NEXT: [[T3:%.*]] = icmp slt <2 x i32> [[T2]], +; CHECK-NEXT: ret <2 x i1> [[T3]] +; + %t1 = zext <2 x i16> %a to <2 x i32> + %t2 = sub <2 x i32> zeroinitializer, %t1 + %t3 = icmp slt <2 x i32> %t2, + ret <2 x i1> %t3 } define i1 @compare_always_true_sle(i16 %a) { ; CHECK-LABEL: @compare_always_true_sle( ; CHECK-NEXT: ret i1 true ; - %1 = zext i16 %a to i32 - %2 = sub nsw i32 0, %1 - %3 = icmp sle i32 %2, 0 - ret i1 %3 + %t1 = zext i16 %a to i32 + %t2 = sub i32 0, %t1 + %t3 = icmp sle i32 %t2, 0 + ret i1 %t3 +} +define <2 x i1> @compare_always_true_sle_splat(<2 x i16> %a) { +; CHECK-LABEL: @compare_always_true_sle_splat( +; CHECK-NEXT: [[T1:%.*]] = zext <2 x i16> [[A:%.*]] to <2 x i32> +; CHECK-NEXT: [[T2:%.*]] = sub <2 x i32> zeroinitializer, [[T1]] +; CHECK-NEXT: [[T3:%.*]] = icmp sle <2 x i32> [[T2]], zeroinitializer +; CHECK-NEXT: ret <2 x i1> [[T3]] +; + %t1 = zext <2 x i16> %a to <2 x i32> + %t2 = sub <2 x i32> zeroinitializer, %t1 + %t3 = icmp sle <2 x i32> %t2, zeroinitializer + ret <2 x i1> %t3 } define i1 @compare_always_false_sgt(i16 %a) { ; CHECK-LABEL: @compare_always_false_sgt( ; CHECK-NEXT: ret i1 false ; - %1 = zext i16 %a to i32 - %2 = sub nsw i32 0, %1 - %3 = icmp sgt i32 %2, 0 - ret i1 %3 + %t1 = zext i16 %a to i32 + %t2 = sub i32 0, %t1 + %t3 = icmp sgt i32 %t2, 0 + ret i1 %t3 +} +define <2 x i1> @compare_always_false_sgt_splat(<2 x i16> %a) { +; CHECK-LABEL: @compare_always_false_sgt_splat( +; CHECK-NEXT: [[T1:%.*]] = zext <2 x i16> [[A:%.*]] to <2 x i32> +; CHECK-NEXT: [[T2:%.*]] = sub <2 x i32> zeroinitializer, [[T1]] +; CHECK-NEXT: [[T3:%.*]] = icmp sgt <2 x i32> [[T2]], zeroinitializer +; CHECK-NEXT: ret <2 x i1> [[T3]] +; + %t1 = zext <2 x i16> %a to <2 x i32> + %t2 = sub <2 x i32> zeroinitializer, %t1 + %t3 = icmp sgt <2 x i32> %t2, zeroinitializer + ret <2 x i1> %t3 } define i1 @compare_always_false_sge(i16 %a) { ; CHECK-LABEL: @compare_always_false_sge( ; CHECK-NEXT: ret i1 false ; - %1 = zext i16 %a to i32 - %2 = sub nsw i32 0, %1 - %3 = icmp sge i32 %2, 1 - ret i1 %3 + %t1 = zext i16 %a to i32 + %t2 = sub i32 0, %t1 + %t3 = icmp sge i32 %t2, 1 + ret i1 %t3 +} +define <2 x i1> @compare_always_false_sge_splat(<2 x i16> %a) { +; CHECK-LABEL: @compare_always_false_sge_splat( +; CHECK-NEXT: [[T1:%.*]] = zext <2 x i16> [[A:%.*]] to <2 x i32> +; CHECK-NEXT: [[T2:%.*]] = sub <2 x i32> zeroinitializer, [[T1]] +; CHECK-NEXT: [[T3:%.*]] = icmp sge <2 x i32> [[T2]], +; CHECK-NEXT: ret <2 x i1> [[T3]] +; + %t1 = zext <2 x i16> %a to <2 x i32> + %t2 = sub <2 x i32> zeroinitializer, %t1 + %t3 = icmp sge <2 x i32> %t2, + ret <2 x i1> %t3 } define i1 @compare_always_false_eq(i16 %a) { ; CHECK-LABEL: @compare_always_false_eq( ; CHECK-NEXT: ret i1 false ; - %1 = zext i16 %a to i32 - %2 = sub nsw i32 0, %1 - %3 = icmp eq i32 %2, 1 - ret i1 %3 + %t1 = zext i16 %a to i32 + %t2 = sub i32 0, %t1 + %t3 = icmp eq i32 %t2, 1 + ret i1 %t3 +} +define <2 x i1> @compare_always_false_eq_splat(<2 x i16> %a) { +; CHECK-LABEL: @compare_always_false_eq_splat( +; CHECK-NEXT: [[T1:%.*]] = zext <2 x i16> [[A:%.*]] to <2 x i32> +; CHECK-NEXT: [[T2:%.*]] = sub <2 x i32> zeroinitializer, [[T1]] +; CHECK-NEXT: [[T3:%.*]] = icmp eq <2 x i32> [[T2]], +; CHECK-NEXT: ret <2 x i1> [[T3]] +; + %t1 = zext <2 x i16> %a to <2 x i32> + %t2 = sub <2 x i32> zeroinitializer, %t1 + %t3 = icmp eq <2 x i32> %t2, + ret <2 x i1> %t3 } -define i1 @compare_always_false_ne(i16 %a) { -; CHECK-LABEL: @compare_always_false_ne( +define i1 @compare_always_true_ne(i16 %a) { +; CHECK-LABEL: @compare_always_true_ne( ; CHECK-NEXT: ret i1 true ; - %1 = zext i16 %a to i32 - %2 = sub nsw i32 0, %1 - %3 = icmp ne i32 %2, 1 - ret i1 %3 + %t1 = zext i16 %a to i32 + %t2 = sub i32 0, %t1 + %t3 = icmp ne i32 %t2, 1 + ret i1 %t3 +} +define <2 x i1> @compare_always_true_ne_splat(<2 x i16> %a) { +; CHECK-LABEL: @compare_always_true_ne_splat( +; CHECK-NEXT: [[T1:%.*]] = zext <2 x i16> [[A:%.*]] to <2 x i32> +; CHECK-NEXT: [[T2:%.*]] = sub <2 x i32> zeroinitializer, [[T1]] +; CHECK-NEXT: [[T3:%.*]] = icmp ne <2 x i32> [[T2]], +; CHECK-NEXT: ret <2 x i1> [[T3]] +; + %t1 = zext <2 x i16> %a to <2 x i32> + %t2 = sub <2 x i32> zeroinitializer, %t1 + %t3 = icmp ne <2 x i32> %t2, + ret <2 x i1> %t3 } define i1 @lshr_ugt_false(i32 %a) { -- 2.7.4