[llvm] r312804 - [X86] Simplify the slow-incdec test and add test cases with optsize.

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 8 10:33:54 PDT 2017


Author: ctopper
Date: Fri Sep  8 10:33:54 2017
New Revision: 312804

URL: http://llvm.org/viewvc/llvm-project?rev=312804&view=rev
Log:
[X86] Simplify the slow-incdec test and add test cases with optsize.

I think we want to consider using inc/dec with optsize.

Modified:
    llvm/trunk/test/CodeGen/X86/slow-incdec.ll

Modified: llvm/trunk/test/CodeGen/X86/slow-incdec.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/slow-incdec.ll?rev=312804&r1=312803&r2=312804&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/slow-incdec.ll (original)
+++ llvm/trunk/test/CodeGen/X86/slow-incdec.ll Fri Sep  8 10:33:54 2017
@@ -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
-
-; 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
+; 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
+
+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
+}




More information about the llvm-commits mailing list