From: Craig Topper Date: Fri, 8 Sep 2017 17:33:54 +0000 (+0000) Subject: [X86] Simplify the slow-incdec test and add test cases with optsize. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=403bab200a25e53c4e5fdc0a55c11292964e08b0;p=llvm [X86] Simplify the slow-incdec test and add test cases with optsize. I think we want to consider using inc/dec with optsize. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@312804 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/CodeGen/X86/slow-incdec.ll b/test/CodeGen/X86/slow-incdec.ll index 1857f61e6c2..715a6fe150e 100644 --- a/test/CodeGen/X86/slow-incdec.ll +++ b/test/CodeGen/X86/slow-incdec.ll @@ -1,80 +1,67 @@ -; RUN: llc -mtriple=i386-unknown-linux-gnu -mattr=-slow-incdec < %s | FileCheck -check-prefix=INCDEC %s -; RUN: llc -mtriple=i386-unknown-linux-gnu -mattr=+slow-incdec < %s | FileCheck -check-prefix=ADD %s +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py +; RUN: llc -mtriple=i386-unknown-linux-gnu -mattr=-slow-incdec < %s | FileCheck -check-prefix=CHECK -check-prefix=INCDEC %s +; RUN: llc -mtriple=i386-unknown-linux-gnu -mattr=+slow-incdec < %s | FileCheck -check-prefix=CHECK -check-prefix=ADD %s -; check -mattr=-slow-incdec -; INCDEC-NOT: addl $-1 -; INCDEC: dec -; INCDEC-NOT: addl $1 -; INCDEC: inc - -; check -mattr=+slow-incdec -; ADD: addl $-1 -; ADD-NOT: dec -; ADD: addl $1 -; ADD-NOT: inc - -; Function Attrs: nounwind readonly -define i32 @slow_1(i32* nocapture readonly %a, i32 %s) #0 { -entry: - %cmp5 = icmp eq i32 %s, 0 - br i1 %cmp5, label %for.end, label %for.body.preheader - -for.body.preheader: ; preds = %entry - br label %for.body - -for.cond: ; preds = %for.body - %cmp = icmp eq i32 %dec, 0 - br i1 %cmp, label %for.end.loopexit, label %for.body - -for.body: ; preds = %for.body.preheader, %for.cond - %i.06 = phi i32 [ %dec, %for.cond ], [ %s, %for.body.preheader ] - %arrayidx = getelementptr inbounds i32, i32* %a, i32 %i.06 - %0 = load i32, i32* %arrayidx, align 4, !tbaa !1 - %cmp1 = icmp eq i32 %0, 0 +define i32 @inc(i32 %x) { +; INCDEC-LABEL: inc: +; INCDEC: # BB#0: +; INCDEC-NEXT: movl {{[0-9]+}}(%esp), %eax +; INCDEC-NEXT: incl %eax +; INCDEC-NEXT: retl ; - %dec = add nsw i32 %i.06, -1 - br i1 %cmp1, label %for.end.loopexit, label %for.cond - -for.end.loopexit: ; preds = %for.cond, %for.body - %i.0.lcssa.ph = phi i32 [ 0, %for.cond ], [ %i.06, %for.body ] - br label %for.end - -for.end: ; preds = %for.end.loopexit, %entry - %i.0.lcssa = phi i32 [ 0, %entry ], [ %i.0.lcssa.ph, %for.end.loopexit ] - ret i32 %i.0.lcssa +; ADD-LABEL: inc: +; ADD: # BB#0: +; ADD-NEXT: movl {{[0-9]+}}(%esp), %eax +; ADD-NEXT: addl $1, %eax +; ADD-NEXT: retl + %r = add i32 %x, 1 + ret i32 %r } -; Function Attrs: nounwind readonly -define i32 @slow_2(i32* nocapture readonly %a, i32 %s) #0 { -entry: - %cmp5 = icmp eq i32 %s, 0 - br i1 %cmp5, label %for.end, label %for.body.preheader - -for.body.preheader: ; preds = %entry - br label %for.body - -for.cond: ; preds = %for.body - %cmp = icmp eq i32 %inc, 0 - br i1 %cmp, label %for.end.loopexit, label %for.body - -for.body: ; preds = %for.body.preheader, %for.cond - %i.06 = phi i32 [ %inc, %for.cond ], [ %s, %for.body.preheader ] - %arrayidx = getelementptr inbounds i32, i32* %a, i32 %i.06 - %0 = load i32, i32* %arrayidx, align 4, !tbaa !1 - %cmp1 = icmp eq i32 %0, 0 - %inc = add nsw i32 %i.06, 1 - br i1 %cmp1, label %for.end.loopexit, label %for.cond - -for.end.loopexit: ; preds = %for.cond, %for.body - %i.0.lcssa.ph = phi i32 [ 0, %for.cond ], [ %i.06, %for.body ] - br label %for.end +define i32 @dec(i32 %x) { +; INCDEC-LABEL: dec: +; INCDEC: # BB#0: +; INCDEC-NEXT: movl {{[0-9]+}}(%esp), %eax +; INCDEC-NEXT: decl %eax +; INCDEC-NEXT: retl +; +; ADD-LABEL: dec: +; ADD: # BB#0: +; ADD-NEXT: movl {{[0-9]+}}(%esp), %eax +; ADD-NEXT: addl $-1, %eax +; ADD-NEXT: retl + %r = add i32 %x, -1 + ret i32 %r +} -for.end: ; preds = %for.end.loopexit, %entry - %i.0.lcssa = phi i32 [ 0, %entry ], [ %i.0.lcssa.ph, %for.end.loopexit ] - ret i32 %i.0.lcssa +define i32 @inc_size(i32 %x) optsize { +; INCDEC-LABEL: inc_size: +; INCDEC: # BB#0: +; INCDEC-NEXT: movl {{[0-9]+}}(%esp), %eax +; INCDEC-NEXT: incl %eax +; INCDEC-NEXT: retl +; +; ADD-LABEL: inc_size: +; ADD: # BB#0: +; ADD-NEXT: movl {{[0-9]+}}(%esp), %eax +; ADD-NEXT: addl $1, %eax +; ADD-NEXT: retl + %r = add i32 %x, 1 + ret i32 %r } -!1 = !{!2, !2, i64 0} -!2 = !{!"int", !3, i64 0} -!3 = !{!"omnipotent char", !4, i64 0} -!4 = !{!"Simple C/C++ TBAA"} +define i32 @dec_size(i32 %x) optsize { +; INCDEC-LABEL: dec_size: +; INCDEC: # BB#0: +; INCDEC-NEXT: movl {{[0-9]+}}(%esp), %eax +; INCDEC-NEXT: decl %eax +; INCDEC-NEXT: retl +; +; ADD-LABEL: dec_size: +; ADD: # BB#0: +; ADD-NEXT: movl {{[0-9]+}}(%esp), %eax +; ADD-NEXT: addl $-1, %eax +; ADD-NEXT: retl + %r = add i32 %x, -1 + ret i32 %r +}