[llvm] 8cc52ca - [instcombine] Add test coverage for (x >>u y) pred x
Philip Reames via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 5 13:34:14 PST 2022
Author: Philip Reames
Date: 2022-01-05T13:34:05-08:00
New Revision: 8cc52ca73491635aa15ce24821a37cb7185a36e8
URL: https://github.com/llvm/llvm-project/commit/8cc52ca73491635aa15ce24821a37cb7185a36e8
DIFF: https://github.com/llvm/llvm-project/commit/8cc52ca73491635aa15ce24821a37cb7185a36e8.diff
LOG: [instcombine] Add test coverage for (x >>u y) pred x
Added:
Modified:
llvm/test/Transforms/InstCombine/lshr.ll
Removed:
################################################################################
diff --git a/llvm/test/Transforms/InstCombine/lshr.ll b/llvm/test/Transforms/InstCombine/lshr.ll
index a158f5ecba92..ce2e3293aff1 100644
--- a/llvm/test/Transforms/InstCombine/lshr.ll
+++ b/llvm/test/Transforms/InstCombine/lshr.ll
@@ -719,3 +719,67 @@ define <3 x i14> @lshr_sext_i1_to_i14_splat_vec_use1(<3 x i1> %a) {
%lshr = lshr <3 x i14> %sext, <i14 4, i14 4, i14 4>
ret <3 x i14> %lshr
}
+
+define i1 @icmp_ule(i32 %x, i32 %y) {
+; CHECK-LABEL: @icmp_ule(
+; CHECK-NEXT: ret i1 true
+;
+ %x.shifted = lshr i32 %x, %y
+ %cmp = icmp ule i32 %x.shifted, %x
+ ret i1 %cmp
+}
+
+define i1 @icmp_ult(i32 %x, i32 %y) {
+; CHECK-LABEL: @icmp_ult(
+; CHECK-NEXT: [[X_SHIFTED:%.*]] = lshr i32 [[X:%.*]], [[Y:%.*]]
+; CHECK-NEXT: [[CMP:%.*]] = icmp ult i32 [[X_SHIFTED]], [[X]]
+; CHECK-NEXT: ret i1 [[CMP]]
+;
+ %x.shifted = lshr i32 %x, %y
+ %cmp = icmp ult i32 %x.shifted, %x
+ ret i1 %cmp
+}
+
+define i1 @icmp_eq(i32 %x, i32 %y) {
+; CHECK-LABEL: @icmp_eq(
+; CHECK-NEXT: [[X_SHIFTED:%.*]] = lshr i32 [[X:%.*]], [[Y:%.*]]
+; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[X_SHIFTED]], [[X]]
+; CHECK-NEXT: ret i1 [[CMP]]
+;
+ %x.shifted = lshr i32 %x, %y
+ %cmp = icmp eq i32 %x.shifted, %x
+ ret i1 %cmp
+}
+
+define i1 @icmp_ne(i32 %x, i32 %y) {
+; CHECK-LABEL: @icmp_ne(
+; CHECK-NEXT: [[X_SHIFTED:%.*]] = lshr i32 [[X:%.*]], [[Y:%.*]]
+; CHECK-NEXT: [[CMP:%.*]] = icmp ne i32 [[X_SHIFTED]], [[X]]
+; CHECK-NEXT: ret i1 [[CMP]]
+;
+ %x.shifted = lshr i32 %x, %y
+ %cmp = icmp ne i32 %x.shifted, %x
+ ret i1 %cmp
+}
+
+define i1 @icmp_ugt(i32 %x, i32 %y) {
+; CHECK-LABEL: @icmp_ugt(
+; CHECK-NEXT: ret i1 false
+;
+ %x.shifted = lshr i32 %x, %y
+ %cmp = icmp ugt i32 %x.shifted, %x
+ ret i1 %cmp
+}
+
+define i1 @icmp_uge(i32 %x, i32 %y) {
+; CHECK-LABEL: @icmp_uge(
+; CHECK-NEXT: [[X_SHIFTED:%.*]] = lshr i32 [[X:%.*]], [[Y:%.*]]
+; CHECK-NEXT: [[CMP:%.*]] = icmp uge i32 [[X_SHIFTED]], [[X]]
+; CHECK-NEXT: ret i1 [[CMP]]
+;
+ %x.shifted = lshr i32 %x, %y
+ %cmp = icmp uge i32 %x.shifted, %x
+ ret i1 %cmp
+}
+
+
More information about the llvm-commits
mailing list