From 544ab1fb88431733d29482a0f599ca60f5afd3c7 Mon Sep 17 00:00:00 2001 From: Sanjay Patel Date: Tue, 26 Mar 2019 15:58:33 +0000 Subject: [PATCH] [InstCombine] update tests to use FileCheck; NFC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357004 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../InstCombine/2007-12-18-AddSelCmpSub.ll | 56 +++++++++------ test/Transforms/InstCombine/lshr-phi.ll | 72 ++++++++++++------- 2 files changed, 83 insertions(+), 45 deletions(-) diff --git a/test/Transforms/InstCombine/2007-12-18-AddSelCmpSub.ll b/test/Transforms/InstCombine/2007-12-18-AddSelCmpSub.ll index 3745e872eee..62fb4132d5d 100644 --- a/test/Transforms/InstCombine/2007-12-18-AddSelCmpSub.ll +++ b/test/Transforms/InstCombine/2007-12-18-AddSelCmpSub.ll @@ -1,29 +1,45 @@ -; RUN: opt < %s -instcombine -S | grep "add" | count 1 +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py +; RUN: opt < %s -instcombine -S | FileCheck %s define i32 @foo(i32 %a) { -entry: - %tmp15 = sub i32 99, %a ; [#uses=2] - %tmp16 = icmp slt i32 %tmp15, 0 ; [#uses=1] - %smax = select i1 %tmp16, i32 0, i32 %tmp15 ; [#uses=1] - %tmp12 = add i32 %smax, %a ; [#uses=1] - %tmp13 = add i32 %tmp12, 1 ; [#uses=1] - ret i32 %tmp13 +; CHECK-LABEL: @foo( +; CHECK-NEXT: [[T15:%.*]] = sub i32 99, [[A:%.*]] +; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt i32 [[T15]], 0 +; CHECK-NEXT: [[A_OP:%.*]] = add i32 [[A]], 1 +; CHECK-NEXT: [[T13:%.*]] = select i1 [[TMP1]], i32 100, i32 [[A_OP]] +; CHECK-NEXT: ret i32 [[T13]] +; + %t15 = sub i32 99, %a + %t16 = icmp slt i32 %t15, 0 + %smax = select i1 %t16, i32 0, i32 %t15 + %t12 = add i32 %smax, %a + %t13 = add i32 %t12, 1 + ret i32 %t13 } define i32 @bar(i32 %a) { -entry: - %tmp15 = sub i32 99, %a ; [#uses=2] - %tmp16 = icmp slt i32 %tmp15, 0 ; [#uses=1] - %smax = select i1 %tmp16, i32 0, i32 %tmp15 ; [#uses=1] - %tmp12 = add i32 %smax, %a ; [#uses=1] - ret i32 %tmp12 +; CHECK-LABEL: @bar( +; CHECK-NEXT: [[T15:%.*]] = sub i32 99, [[A:%.*]] +; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt i32 [[T15]], 0 +; CHECK-NEXT: [[T12:%.*]] = select i1 [[TMP1]], i32 99, i32 [[A]] +; CHECK-NEXT: ret i32 [[T12]] +; + %t15 = sub i32 99, %a + %t16 = icmp slt i32 %t15, 0 + %smax = select i1 %t16, i32 0, i32 %t15 + %t12 = add i32 %smax, %a + ret i32 %t12 } define i32 @fun(i32 %a) { -entry: - %tmp15 = sub i32 99, %a ; [#uses=1] - %tmp16 = icmp slt i32 %a, 0 ; [#uses=1] - %smax = select i1 %tmp16, i32 0, i32 %tmp15 ; [#uses=1] - %tmp12 = add i32 %smax, %a ; [#uses=1] - ret i32 %tmp12 +; CHECK-LABEL: @fun( +; CHECK-NEXT: [[T16:%.*]] = icmp slt i32 [[A:%.*]], 0 +; CHECK-NEXT: [[T12:%.*]] = select i1 [[T16]], i32 [[A]], i32 99 +; CHECK-NEXT: ret i32 [[T12]] +; + %t15 = sub i32 99, %a + %t16 = icmp slt i32 %a, 0 + %smax = select i1 %t16, i32 0, i32 %t15 + %t12 = add i32 %smax, %a + ret i32 %t12 } diff --git a/test/Transforms/InstCombine/lshr-phi.ll b/test/Transforms/InstCombine/lshr-phi.ll index 79dc8b33192..91fd2981e5b 100644 --- a/test/Transforms/InstCombine/lshr-phi.ll +++ b/test/Transforms/InstCombine/lshr-phi.ll @@ -1,35 +1,57 @@ -; RUN: opt < %s -instcombine -S > %t -; RUN: not grep lshr %t -; RUN: grep add %t | count 1 +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py +; RUN: opt < %s -instcombine -S | FileCheck %s ; Instcombine should be able to eliminate the lshr, because only ; bits in the operand which might be non-zero will be shifted ; off the end. define i32 @hash_string(i8* nocapture %key) nounwind readonly { +; CHECK-LABEL: @hash_string( +; CHECK-NEXT: entry: +; CHECK-NEXT: [[T0:%.*]] = load i8, i8* [[KEY:%.*]], align 1 +; CHECK-NEXT: [[T1:%.*]] = icmp eq i8 [[T0]], 0 +; CHECK-NEXT: br i1 [[T1]], label [[BB2:%.*]], label [[BB:%.*]] +; CHECK: bb: +; CHECK-NEXT: [[INDVAR:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[T:%.*]], [[BB]] ] +; CHECK-NEXT: [[K_04:%.*]] = phi i32 [ 0, [[ENTRY]] ], [ [[T8:%.*]], [[BB]] ] +; CHECK-NEXT: [[CP_05:%.*]] = getelementptr i8, i8* [[KEY]], i64 [[INDVAR]] +; CHECK-NEXT: [[T2:%.*]] = shl nuw nsw i32 [[K_04]], 1 +; CHECK-NEXT: [[T5:%.*]] = load i8, i8* [[CP_05]], align 1 +; CHECK-NEXT: [[T6:%.*]] = sext i8 [[T5]] to i32 +; CHECK-NEXT: [[T7:%.*]] = xor i32 [[T2]], [[T6]] +; CHECK-NEXT: [[T8]] = and i32 [[T7]], 16383 +; CHECK-NEXT: [[T]] = add i64 [[INDVAR]], 1 +; CHECK-NEXT: [[SCEVGEP:%.*]] = getelementptr i8, i8* [[KEY]], i64 [[T]] +; CHECK-NEXT: [[T9:%.*]] = load i8, i8* [[SCEVGEP]], align 1 +; CHECK-NEXT: [[T10:%.*]] = icmp eq i8 [[T9]], 0 +; CHECK-NEXT: br i1 [[T10]], label [[BB2]], label [[BB]] +; CHECK: bb2: +; CHECK-NEXT: [[K_0_LCSSA:%.*]] = phi i32 [ 0, [[ENTRY]] ], [ [[T8]], [[BB]] ] +; CHECK-NEXT: ret i32 [[K_0_LCSSA]] +; entry: - %t0 = load i8, i8* %key, align 1 ; [#uses=1] - %t1 = icmp eq i8 %t0, 0 ; [#uses=1] - br i1 %t1, label %bb2, label %bb + %t0 = load i8, i8* %key, align 1 + %t1 = icmp eq i8 %t0, 0 + br i1 %t1, label %bb2, label %bb -bb: ; preds = %bb, %entry - %indvar = phi i64 [ 0, %entry ], [ %tmp, %bb ] ; [#uses=2] - %k.04 = phi i32 [ 0, %entry ], [ %t8, %bb ] ; [#uses=2] - %cp.05 = getelementptr i8, i8* %key, i64 %indvar ; [#uses=1] - %t2 = shl i32 %k.04, 1 ; [#uses=1] - %t3 = lshr i32 %k.04, 14 ; [#uses=1] - %t4 = add i32 %t2, %t3 ; [#uses=1] - %t5 = load i8, i8* %cp.05, align 1 ; [#uses=1] - %t6 = sext i8 %t5 to i32 ; [#uses=1] - %t7 = xor i32 %t6, %t4 ; [#uses=1] - %t8 = and i32 %t7, 16383 ; [#uses=2] - %tmp = add i64 %indvar, 1 ; [#uses=2] - %scevgep = getelementptr i8, i8* %key, i64 %tmp ; [#uses=1] - %t9 = load i8, i8* %scevgep, align 1 ; [#uses=1] - %t10 = icmp eq i8 %t9, 0 ; [#uses=1] - br i1 %t10, label %bb2, label %bb +bb: + %indvar = phi i64 [ 0, %entry ], [ %t, %bb ] + %k.04 = phi i32 [ 0, %entry ], [ %t8, %bb ] + %cp.05 = getelementptr i8, i8* %key, i64 %indvar + %t2 = shl i32 %k.04, 1 + %t3 = lshr i32 %k.04, 14 + %t4 = add i32 %t2, %t3 + %t5 = load i8, i8* %cp.05, align 1 + %t6 = sext i8 %t5 to i32 + %t7 = xor i32 %t6, %t4 + %t8 = and i32 %t7, 16383 + %t = add i64 %indvar, 1 + %scevgep = getelementptr i8, i8* %key, i64 %t + %t9 = load i8, i8* %scevgep, align 1 + %t10 = icmp eq i8 %t9, 0 + br i1 %t10, label %bb2, label %bb -bb2: ; preds = %bb, %entry - %k.0.lcssa = phi i32 [ 0, %entry ], [ %t8, %bb ] ; [#uses=1] - ret i32 %k.0.lcssa +bb2: + %k.0.lcssa = phi i32 [ 0, %entry ], [ %t8, %bb ] + ret i32 %k.0.lcssa } -- 2.50.1