From 60f80d7a8b6cdb7cad2ae2d6d6affdcac0fb5b48 Mon Sep 17 00:00:00 2001 From: Sanjay Patel Date: Mon, 24 Oct 2016 22:50:26 +0000 Subject: [PATCH] [InstCombine] regenerate some checks llvm-svn: 285036 --- llvm/test/Transforms/InstCombine/select.ll | 161 +++++++++++++++-------------- 1 file changed, 86 insertions(+), 75 deletions(-) diff --git a/llvm/test/Transforms/InstCombine/select.ll b/llvm/test/Transforms/InstCombine/select.ll index 75be6c9..1b75382 100644 --- a/llvm/test/Transforms/InstCombine/select.ll +++ b/llvm/test/Transforms/InstCombine/select.ll @@ -722,97 +722,108 @@ define i32 @test42(i32 %x, i32 %y) { ; CHECK-NEXT: ret i32 %c } -define i64 @test43(i32 %a) nounwind { - %a_ext = sext i32 %a to i64 - %is_a_nonnegative = icmp sgt i32 %a, -1 - %max = select i1 %is_a_nonnegative, i64 %a_ext, i64 0 - ret i64 %max +define i64 @test43(i32 %a) { ; CHECK-LABEL: @test43( -; CHECK-NEXT: %a_ext = sext i32 %a to i64 -; CHECK-NEXT: %is_a_nonnegative = icmp slt i64 %a_ext, 0 -; CHECK-NEXT: %max = select i1 %is_a_nonnegative, i64 0, i64 %a_ext -; CHECK-NEXT: ret i64 %max +; CHECK-NEXT: [[A_EXT:%.*]] = sext i32 %a to i64 +; CHECK-NEXT: [[IS_A_NONNEGATIVE:%.*]] = icmp slt i64 [[A_EXT]], 0 +; CHECK-NEXT: [[MAX:%.*]] = select i1 [[IS_A_NONNEGATIVE]], i64 0, i64 [[A_EXT]] +; CHECK-NEXT: ret i64 [[MAX]] +; + %a_ext = sext i32 %a to i64 + %is_a_nonnegative = icmp sgt i32 %a, -1 + %max = select i1 %is_a_nonnegative, i64 %a_ext, i64 0 + ret i64 %max } -define i64 @test44(i32 %a) nounwind { - %a_ext = sext i32 %a to i64 - %is_a_nonpositive = icmp slt i32 %a, 1 - %min = select i1 %is_a_nonpositive, i64 %a_ext, i64 0 - ret i64 %min +define i64 @test44(i32 %a) { ; CHECK-LABEL: @test44( -; CHECK-NEXT: %a_ext = sext i32 %a to i64 -; CHECK-NEXT: %is_a_nonpositive = icmp sgt i64 %a_ext, 0 -; CHECK-NEXT: %min = select i1 %is_a_nonpositive, i64 0, i64 %a_ext -; CHECK-NEXT: ret i64 %min -} -define i64 @test45(i32 %a) nounwind { - %a_ext = zext i32 %a to i64 - %is_a_nonnegative = icmp ugt i32 %a, 2 - %max = select i1 %is_a_nonnegative, i64 %a_ext, i64 3 - ret i64 %max +; CHECK-NEXT: [[A_EXT:%.*]] = sext i32 %a to i64 +; CHECK-NEXT: [[IS_A_NONPOSITIVE:%.*]] = icmp sgt i64 [[A_EXT]], 0 +; CHECK-NEXT: [[MIN:%.*]] = select i1 [[IS_A_NONPOSITIVE]], i64 0, i64 [[A_EXT]] +; CHECK-NEXT: ret i64 [[MIN]] +; + %a_ext = sext i32 %a to i64 + %is_a_nonpositive = icmp slt i32 %a, 1 + %min = select i1 %is_a_nonpositive, i64 %a_ext, i64 0 + ret i64 %min +} + +define i64 @test45(i32 %a) { ; CHECK-LABEL: @test45( -; CHECK-NEXT: %a_ext = zext i32 %a to i64 -; CHECK-NEXT: %is_a_nonnegative = icmp ult i64 %a_ext, 3 -; CHECK-NEXT: %max = select i1 %is_a_nonnegative, i64 3, i64 %a_ext -; CHECK-NEXT: ret i64 %max +; CHECK-NEXT: [[A_EXT:%.*]] = zext i32 %a to i64 +; CHECK-NEXT: [[IS_A_NONNEGATIVE:%.*]] = icmp ult i64 [[A_EXT]], 3 +; CHECK-NEXT: [[MAX:%.*]] = select i1 [[IS_A_NONNEGATIVE]], i64 3, i64 [[A_EXT]] +; CHECK-NEXT: ret i64 [[MAX]] +; + %a_ext = zext i32 %a to i64 + %is_a_nonnegative = icmp ugt i32 %a, 2 + %max = select i1 %is_a_nonnegative, i64 %a_ext, i64 3 + ret i64 %max } -define i64 @test46(i32 %a) nounwind { - %a_ext = zext i32 %a to i64 - %is_a_nonpositive = icmp ult i32 %a, 3 - %min = select i1 %is_a_nonpositive, i64 %a_ext, i64 2 - ret i64 %min +define i64 @test46(i32 %a) { ; CHECK-LABEL: @test46( -; CHECK-NEXT: %a_ext = zext i32 %a to i64 -; CHECK-NEXT: %is_a_nonpositive = icmp ugt i64 %a_ext, 2 -; CHECK-NEXT: %min = select i1 %is_a_nonpositive, i64 2, i64 %a_ext -; CHECK-NEXT: ret i64 %min -} -define i64 @test47(i32 %a) nounwind { - %a_ext = sext i32 %a to i64 - %is_a_nonnegative = icmp ugt i32 %a, 2 - %max = select i1 %is_a_nonnegative, i64 %a_ext, i64 3 - ret i64 %max +; CHECK-NEXT: [[A_EXT:%.*]] = zext i32 %a to i64 +; CHECK-NEXT: [[IS_A_NONPOSITIVE:%.*]] = icmp ugt i64 [[A_EXT]], 2 +; CHECK-NEXT: [[MIN:%.*]] = select i1 [[IS_A_NONPOSITIVE]], i64 2, i64 [[A_EXT]] +; CHECK-NEXT: ret i64 [[MIN]] +; + %a_ext = zext i32 %a to i64 + %is_a_nonpositive = icmp ult i32 %a, 3 + %min = select i1 %is_a_nonpositive, i64 %a_ext, i64 2 + ret i64 %min +} + +define i64 @test47(i32 %a) { ; CHECK-LABEL: @test47( -; CHECK-NEXT: %a_ext = sext i32 %a to i64 -; CHECK-NEXT: %is_a_nonnegative = icmp ult i64 %a_ext, 3 -; CHECK-NEXT: %max = select i1 %is_a_nonnegative, i64 3, i64 %a_ext -; CHECK-NEXT: ret i64 %max +; CHECK-NEXT: [[A_EXT:%.*]] = sext i32 %a to i64 +; CHECK-NEXT: [[IS_A_NONNEGATIVE:%.*]] = icmp ult i64 [[A_EXT]], 3 +; CHECK-NEXT: [[MAX:%.*]] = select i1 [[IS_A_NONNEGATIVE]], i64 3, i64 [[A_EXT]] +; CHECK-NEXT: ret i64 [[MAX]] +; + %a_ext = sext i32 %a to i64 + %is_a_nonnegative = icmp ugt i32 %a, 2 + %max = select i1 %is_a_nonnegative, i64 %a_ext, i64 3 + ret i64 %max } -define i64 @test48(i32 %a) nounwind { - %a_ext = sext i32 %a to i64 - %is_a_nonpositive = icmp ult i32 %a, 3 - %min = select i1 %is_a_nonpositive, i64 %a_ext, i64 2 - ret i64 %min +define i64 @test48(i32 %a) { ; CHECK-LABEL: @test48( -; CHECK-NEXT: %a_ext = sext i32 %a to i64 -; CHECK-NEXT: %is_a_nonpositive = icmp ugt i64 %a_ext, 2 -; CHECK-NEXT: %min = select i1 %is_a_nonpositive, i64 2, i64 %a_ext -; CHECK-NEXT: ret i64 %min +; CHECK-NEXT: [[A_EXT:%.*]] = sext i32 %a to i64 +; CHECK-NEXT: [[IS_A_NONPOSITIVE:%.*]] = icmp ugt i64 [[A_EXT]], 2 +; CHECK-NEXT: [[MIN:%.*]] = select i1 [[IS_A_NONPOSITIVE]], i64 2, i64 [[A_EXT]] +; CHECK-NEXT: ret i64 [[MIN]] +; + %a_ext = sext i32 %a to i64 + %is_a_nonpositive = icmp ult i32 %a, 3 + %min = select i1 %is_a_nonpositive, i64 %a_ext, i64 2 + ret i64 %min } -define i64 @test49(i32 %a) nounwind { - %a_ext = sext i32 %a to i64 - %is_a_nonpositive = icmp ult i32 %a, 3 - %min = select i1 %is_a_nonpositive, i64 2, i64 %a_ext - ret i64 %min +define i64 @test49(i32 %a) { ; CHECK-LABEL: @test49( -; CHECK-NEXT: %a_ext = sext i32 %a to i64 -; CHECK-NEXT: %is_a_nonpositive = icmp ugt i64 %a_ext, 2 -; CHECK-NEXT: %min = select i1 %is_a_nonpositive, i64 %a_ext, i64 2 -; CHECK-NEXT: ret i64 %min -} -define i64 @test50(i32 %a) nounwind { - %is_a_nonpositive = icmp ult i32 %a, 3 - %a_ext = sext i32 %a to i64 - %min = select i1 %is_a_nonpositive, i64 2, i64 %a_ext - ret i64 %min +; CHECK-NEXT: [[A_EXT:%.*]] = sext i32 %a to i64 +; CHECK-NEXT: [[IS_A_NONPOSITIVE:%.*]] = icmp ugt i64 [[A_EXT]], 2 +; CHECK-NEXT: [[MIN:%.*]] = select i1 [[IS_A_NONPOSITIVE]], i64 [[A_EXT]], i64 2 +; CHECK-NEXT: ret i64 [[MIN]] +; + %a_ext = sext i32 %a to i64 + %is_a_nonpositive = icmp ult i32 %a, 3 + %min = select i1 %is_a_nonpositive, i64 2, i64 %a_ext + ret i64 %min +} + +define i64 @test50(i32 %a) { ; CHECK-LABEL: @test50( -; CHECK-NEXT: %a_ext = sext i32 %a to i64 -; CHECK-NEXT: %is_a_nonpositive = icmp ugt i64 %a_ext, 2 -; CHECK-NEXT: %min = select i1 %is_a_nonpositive, i64 %a_ext, i64 2 -; CHECK-NEXT: ret i64 %min +; CHECK-NEXT: [[A_EXT:%.*]] = sext i32 %a to i64 +; CHECK-NEXT: [[IS_A_NONPOSITIVE:%.*]] = icmp ugt i64 [[A_EXT]], 2 +; CHECK-NEXT: [[MIN:%.*]] = select i1 [[IS_A_NONPOSITIVE]], i64 [[A_EXT]], i64 2 +; CHECK-NEXT: ret i64 [[MIN]] +; + %is_a_nonpositive = icmp ult i32 %a, 3 + %a_ext = sext i32 %a to i64 + %min = select i1 %is_a_nonpositive, i64 2, i64 %a_ext + ret i64 %min } ; PR8994 -- 2.7.4