[llvm] r261701 - minimize test and use FileCheck

Sanjay Patel via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 23 14:03:45 PST 2016


Author: spatel
Date: Tue Feb 23 16:03:44 2016
New Revision: 261701

URL: http://llvm.org/viewvc/llvm-project?rev=261701&view=rev
Log:
minimize test and use FileCheck

Modified:
    llvm/trunk/test/Transforms/InstCombine/zext-or-icmp.ll

Modified: llvm/trunk/test/Transforms/InstCombine/zext-or-icmp.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/zext-or-icmp.ll?rev=261701&r1=261700&r2=261701&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/InstCombine/zext-or-icmp.ll (original)
+++ llvm/trunk/test/Transforms/InstCombine/zext-or-icmp.ll Tue Feb 23 16:03:44 2016
@@ -1,35 +1,21 @@
-; RUN: opt < %s -instcombine -S | grep icmp | count 1
+; RUN: opt < %s -instcombine -S | FileCheck %s
 
-	%struct.FooBar = type <{ i8, i8, [2 x i8], i8, i8, i8, i8, i16, i16, [4 x i8], [8 x %struct.Rock] }>
-	%struct.Rock = type { i16, i16 }
- at some_idx = internal constant [4 x i8] c"\0A\0B\0E\0F"		; <[4 x i8]*> [#uses=1]
+; Remove an icmp by using its operand in the subsequent logic directly.
 
-define zeroext  i8 @t(%struct.FooBar* %up, i8 zeroext  %intra_flag, i32 %blk_i) nounwind  {
-entry:
-	%tmp2 = lshr i32 %blk_i, 1		; <i32> [#uses=1]
-	%tmp3 = and i32 %tmp2, 2		; <i32> [#uses=1]
-	%tmp5 = and i32 %blk_i, 1		; <i32> [#uses=1]
-	%tmp6 = or i32 %tmp3, %tmp5		; <i32> [#uses=1]
-	%tmp8 = getelementptr %struct.FooBar, %struct.FooBar* %up, i32 0, i32 7		; <i16*> [#uses=1]
-	%tmp9 = load i16, i16* %tmp8, align 1		; <i16> [#uses=1]
-	%tmp910 = zext i16 %tmp9 to i32		; <i32> [#uses=1]
-	%tmp12 = getelementptr [4 x i8], [4 x i8]* @some_idx, i32 0, i32 %tmp6		; <i8*> [#uses=1]
-	%tmp13 = load i8, i8* %tmp12, align 1		; <i8> [#uses=1]
-	%tmp1314 = zext i8 %tmp13 to i32		; <i32> [#uses=1]
-	%tmp151 = lshr i32 %tmp910, %tmp1314		; <i32> [#uses=1]
-	%tmp1516 = trunc i32 %tmp151 to i8		; <i8> [#uses=1]
-	%tmp18 = getelementptr %struct.FooBar, %struct.FooBar* %up, i32 0, i32 0		; <i8*> [#uses=1]
-	%tmp19 = load i8, i8* %tmp18, align 1		; <i8> [#uses=1]
-	%tmp22 = and i8 %tmp1516, %tmp19		; <i8> [#uses=1]
-	%tmp24 = getelementptr %struct.FooBar, %struct.FooBar* %up, i32 0, i32 0		; <i8*> [#uses=1]
-	%tmp25 = load i8, i8* %tmp24, align 1		; <i8> [#uses=1]
-	%tmp26.mask = and i8 %tmp25, 1		; <i8> [#uses=1]
-	%toBool = icmp eq i8 %tmp26.mask, 0		; <i1> [#uses=1]
-	%toBool.not = xor i1 %toBool, true		; <i1> [#uses=1]
-	%toBool33 = icmp eq i8 %intra_flag, 0		; <i1> [#uses=1]
-	%bothcond = or i1 %toBool.not, %toBool33		; <i1> [#uses=1]
-	%iftmp.1.0 = select i1 %bothcond, i8 0, i8 1		; <i8> [#uses=1]
-	%tmp40 = or i8 %tmp22, %iftmp.1.0		; <i8> [#uses=1]
-	%tmp432 = and i8 %tmp40, 1		; <i8> [#uses=1]
-	ret i8 %tmp432
+define i8 @zext_or_icmp_icmp(i8 %a, i8 %b) {
+  %mask = and i8 %a, 1
+  %toBool1 = icmp eq i8 %mask, 0
+  %toBool2 = icmp eq i8 %b, 0
+  %bothCond = or i1 %toBool1, %toBool2
+  %zext = zext i1 %bothCond to i8
+  ret i8 %zext
+
+; CHECK-LABEL: zext_or_icmp_icmp(
+; CHECK-NEXT:    %mask = and i8 %a, 1
+; CHECK-NEXT:    %toBool2 = icmp eq i8 %b, 0
+; CHECK-NEXT:    %1 = xor i8 %mask, 1
+; CHECK-NEXT:    %toBool22 = zext i1 %toBool2 to i8
+; CHECK-NEXT:    %zext = or i8 %1, %toBool22
+; CHECK-NEXT:    ret i8 %zext
 }
+




More information about the llvm-commits mailing list