brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.9 KiB · 548e74d Raw
259 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2;RUN: llc < %s -mtriple=i686-- -mattr=-slow-incdec | FileCheck %s -check-prefixes=CHECK,SLOW3;RUN: llc < %s -mtriple=i686-- -mattr=+slow-incdec | FileCheck %s -check-prefixes=CHECK,FAST4 5define void @foo(i32 inreg %dns) minsize {6; CHECK-LABEL: foo:7; CHECK:       # %bb.0: # %entry8; CHECK-NEXT:    xorl %ecx, %ecx9; CHECK-NEXT:    decl %ecx10; CHECK-NEXT:  .LBB0_1: # %for.body11; CHECK-NEXT:    # =>This Inner Loop Header: Depth=112; CHECK-NEXT:    movzwl %cx, %edx13; CHECK-NEXT:    decl %ecx14; CHECK-NEXT:    cmpl %eax, %edx15; CHECK-NEXT:    jl .LBB0_116; CHECK-NEXT:  # %bb.2: # %for.end17; CHECK-NEXT:    retl18entry:19  br label %for.body20 21for.body:22  %i.05 = phi i16 [ %dec, %for.body ], [ 0, %entry ]23  %dec = add i16 %i.05, -124  %conv = zext i16 %dec to i3225  %cmp = icmp slt i32 %conv, %dns26  br i1 %cmp, label %for.body, label %for.end27 28for.end:29  ret void30}31 32define void @bar(i32 inreg %dns) minsize {33; CHECK-LABEL: bar:34; CHECK:       # %bb.0: # %entry35; CHECK-NEXT:    xorl %ecx, %ecx36; CHECK-NEXT:    incl %ecx37; CHECK-NEXT:  .LBB1_1: # %for.body38; CHECK-NEXT:    # =>This Inner Loop Header: Depth=139; CHECK-NEXT:    movzwl %cx, %edx40; CHECK-NEXT:    incl %ecx41; CHECK-NEXT:    cmpl %eax, %edx42; CHECK-NEXT:    jl .LBB1_143; CHECK-NEXT:  # %bb.2: # %for.end44; CHECK-NEXT:    retl45entry:46  br label %for.body47 48for.body:49  %i.05 = phi i16 [ %inc, %for.body ], [ 0, %entry ]50  %inc = add i16 %i.05, 151  %conv = zext i16 %inc to i3252  %cmp = icmp slt i32 %conv, %dns53  br i1 %cmp, label %for.body, label %for.end54for.end:55  ret void56}57 58define void @foo_optsize(i32 inreg %dns) optsize {59; CHECK-LABEL: foo_optsize:60; CHECK:       # %bb.0: # %entry61; CHECK-NEXT:    xorl %ecx, %ecx62; CHECK-NEXT:    decl %ecx63; CHECK-NEXT:  .LBB2_1: # %for.body64; CHECK-NEXT:    # =>This Inner Loop Header: Depth=165; CHECK-NEXT:    movzwl %cx, %edx66; CHECK-NEXT:    decl %ecx67; CHECK-NEXT:    cmpl %eax, %edx68; CHECK-NEXT:    jl .LBB2_169; CHECK-NEXT:  # %bb.2: # %for.end70; CHECK-NEXT:    retl71entry:72  br label %for.body73 74for.body:75  %i.05 = phi i16 [ %dec, %for.body ], [ 0, %entry ]76  %dec = add i16 %i.05, -177  %conv = zext i16 %dec to i3278  %cmp = icmp slt i32 %conv, %dns79  br i1 %cmp, label %for.body, label %for.end80 81for.end:82  ret void83}84 85define void @bar_optsize(i32 inreg %dns) optsize {86; CHECK-LABEL: bar_optsize:87; CHECK:       # %bb.0: # %entry88; CHECK-NEXT:    xorl %ecx, %ecx89; CHECK-NEXT:    incl %ecx90; CHECK-NEXT:  .LBB3_1: # %for.body91; CHECK-NEXT:    # =>This Inner Loop Header: Depth=192; CHECK-NEXT:    movzwl %cx, %edx93; CHECK-NEXT:    incl %ecx94; CHECK-NEXT:    cmpl %eax, %edx95; CHECK-NEXT:    jl .LBB3_196; CHECK-NEXT:  # %bb.2: # %for.end97; CHECK-NEXT:    retl98entry:99  br label %for.body100 101for.body:102  %i.05 = phi i16 [ %inc, %for.body ], [ 0, %entry ]103  %inc = add i16 %i.05, 1104  %conv = zext i16 %inc to i32105  %cmp = icmp slt i32 %conv, %dns106  br i1 %cmp, label %for.body, label %for.end107for.end:108  ret void109}110 111define void @foo_pgso(i32 inreg %dns) !prof !14 {112; CHECK-LABEL: foo_pgso:113; CHECK:       # %bb.0: # %entry114; CHECK-NEXT:    xorl %ecx, %ecx115; CHECK-NEXT:    decl %ecx116; CHECK-NEXT:  .LBB4_1: # %for.body117; CHECK-NEXT:    # =>This Inner Loop Header: Depth=1118; CHECK-NEXT:    movzwl %cx, %edx119; CHECK-NEXT:    decl %ecx120; CHECK-NEXT:    cmpl %eax, %edx121; CHECK-NEXT:    jl .LBB4_1122; CHECK-NEXT:  # %bb.2: # %for.end123; CHECK-NEXT:    retl124entry:125  br label %for.body126 127for.body:128  %i.05 = phi i16 [ %dec, %for.body ], [ 0, %entry ]129  %dec = add i16 %i.05, -1130  %conv = zext i16 %dec to i32131  %cmp = icmp slt i32 %conv, %dns132  br i1 %cmp, label %for.body, label %for.end133 134for.end:135  ret void136}137 138define void @bar_pgso(i32 inreg %dns) !prof !14 {139; CHECK-LABEL: bar_pgso:140; CHECK:       # %bb.0: # %entry141; CHECK-NEXT:    xorl %ecx, %ecx142; CHECK-NEXT:    incl %ecx143; CHECK-NEXT:  .LBB5_1: # %for.body144; CHECK-NEXT:    # =>This Inner Loop Header: Depth=1145; CHECK-NEXT:    movzwl %cx, %edx146; CHECK-NEXT:    incl %ecx147; CHECK-NEXT:    cmpl %eax, %edx148; CHECK-NEXT:    jl .LBB5_1149; CHECK-NEXT:  # %bb.2: # %for.end150; CHECK-NEXT:    retl151entry:152  br label %for.body153 154for.body:155  %i.05 = phi i16 [ %inc, %for.body ], [ 0, %entry ]156  %inc = add i16 %i.05, 1157  %conv = zext i16 %inc to i32158  %cmp = icmp slt i32 %conv, %dns159  br i1 %cmp, label %for.body, label %for.end160for.end:161  ret void162}163 164define void @foo_nosize(i32 inreg %dns) {165; SLOW-LABEL: foo_nosize:166; SLOW:       # %bb.0: # %entry167; SLOW-NEXT:    movw $-1, %cx168; SLOW-NEXT:    .p2align 4169; SLOW-NEXT:  .LBB6_1: # %for.body170; SLOW-NEXT:    # =>This Inner Loop Header: Depth=1171; SLOW-NEXT:    movzwl %cx, %edx172; SLOW-NEXT:    decl %ecx173; SLOW-NEXT:    cmpl %eax, %edx174; SLOW-NEXT:    jl .LBB6_1175; SLOW-NEXT:  # %bb.2: # %for.end176; SLOW-NEXT:    retl177;178; FAST-LABEL: foo_nosize:179; FAST:       # %bb.0: # %entry180; FAST-NEXT:    movw $-1, %cx181; FAST-NEXT:    .p2align 4182; FAST-NEXT:  .LBB6_1: # %for.body183; FAST-NEXT:    # =>This Inner Loop Header: Depth=1184; FAST-NEXT:    movzwl %cx, %edx185; FAST-NEXT:    addl $-1, %ecx186; FAST-NEXT:    cmpl %eax, %edx187; FAST-NEXT:    jl .LBB6_1188; FAST-NEXT:  # %bb.2: # %for.end189; FAST-NEXT:    retl190entry:191  br label %for.body192 193for.body:194  %i.05 = phi i16 [ %dec, %for.body ], [ 0, %entry ]195  %dec = add i16 %i.05, -1196  %conv = zext i16 %dec to i32197  %cmp = icmp slt i32 %conv, %dns198  br i1 %cmp, label %for.body, label %for.end199 200for.end:201  ret void202}203 204define void @bar_nosize(i32 inreg %dns) {205; SLOW-LABEL: bar_nosize:206; SLOW:       # %bb.0: # %entry207; SLOW-NEXT:    movw $1, %cx208; SLOW-NEXT:    .p2align 4209; SLOW-NEXT:  .LBB7_1: # %for.body210; SLOW-NEXT:    # =>This Inner Loop Header: Depth=1211; SLOW-NEXT:    movzwl %cx, %edx212; SLOW-NEXT:    incl %ecx213; SLOW-NEXT:    cmpl %eax, %edx214; SLOW-NEXT:    jl .LBB7_1215; SLOW-NEXT:  # %bb.2: # %for.end216; SLOW-NEXT:    retl217;218; FAST-LABEL: bar_nosize:219; FAST:       # %bb.0: # %entry220; FAST-NEXT:    movw $1, %cx221; FAST-NEXT:    .p2align 4222; FAST-NEXT:  .LBB7_1: # %for.body223; FAST-NEXT:    # =>This Inner Loop Header: Depth=1224; FAST-NEXT:    movzwl %cx, %edx225; FAST-NEXT:    addl $1, %ecx226; FAST-NEXT:    cmpl %eax, %edx227; FAST-NEXT:    jl .LBB7_1228; FAST-NEXT:  # %bb.2: # %for.end229; FAST-NEXT:    retl230entry:231  br label %for.body232 233for.body:234  %i.05 = phi i16 [ %inc, %for.body ], [ 0, %entry ]235  %inc = add i16 %i.05, 1236  %conv = zext i16 %inc to i32237  %cmp = icmp slt i32 %conv, %dns238  br i1 %cmp, label %for.body, label %for.end239for.end:240  ret void241}242 243!llvm.module.flags = !{!0}244!0 = !{i32 1, !"ProfileSummary", !1}245!1 = !{!2, !3, !4, !5, !6, !7, !8, !9}246!2 = !{!"ProfileFormat", !"InstrProf"}247!3 = !{!"TotalCount", i64 10000}248!4 = !{!"MaxCount", i64 10}249!5 = !{!"MaxInternalCount", i64 1}250!6 = !{!"MaxFunctionCount", i64 1000}251!7 = !{!"NumCounts", i64 3}252!8 = !{!"NumFunctions", i64 3}253!9 = !{!"DetailedSummary", !10}254!10 = !{!11, !12, !13}255!11 = !{i32 10000, i64 100, i32 1}256!12 = !{i32 999000, i64 100, i32 1}257!13 = !{i32 999999, i64 1, i32 2}258!14 = !{!"function_entry_count", i64 0}259