brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.8 KiB · 0a6ef0d Raw
170 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 62; RUN: opt < %s -passes='print<scalar-evolution>' -disable-output 2>&1 | FileCheck %s3 4declare void @use(i64)5 6define void @test_step2_div4(i64 %n) {7; CHECK-LABEL: 'test_step2_div4'8; CHECK-NEXT:  Classifying expressions for: @test_step2_div49; CHECK-NEXT:    %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]10; CHECK-NEXT:    --> {0,+,2}<%loop> U: [0,-1) S: [-9223372036854775808,9223372036854775807) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }11; CHECK-NEXT:    %div.0 = udiv i64 %iv, 412; CHECK-NEXT:    --> ({0,+,2}<%loop> /u 4) U: [0,4611686018427387904) S: [0,4611686018427387904) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }13; CHECK-NEXT:    %iv.1 = add i64 %iv, 114; CHECK-NEXT:    --> {1,+,2}<%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }15; CHECK-NEXT:    %div.1 = udiv i64 %iv.1, 416; CHECK-NEXT:    --> ({1,+,2}<%loop> /u 4) U: [0,4611686018427387904) S: [0,4611686018427387904) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }17; CHECK-NEXT:    %iv.2 = add i64 %iv, 218; CHECK-NEXT:    --> {2,+,2}<%loop> U: [0,-1) S: [-9223372036854775808,9223372036854775807) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }19; CHECK-NEXT:    %div.2 = udiv i64 %iv.2, 420; CHECK-NEXT:    --> ({2,+,2}<%loop> /u 4) U: [0,4611686018427387904) S: [0,4611686018427387904) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }21; CHECK-NEXT:    %iv.neg.1 = add i64 %iv, -122; CHECK-NEXT:    --> {-1,+,2}<%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }23; CHECK-NEXT:    %div.neg.1 = udiv i64 %iv.neg.1, 424; CHECK-NEXT:    --> ({-1,+,2}<%loop> /u 4) U: [0,4611686018427387904) S: [0,4611686018427387904) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }25; CHECK-NEXT:    %iv.next = add i64 %iv, 226; CHECK-NEXT:    --> {2,+,2}<%loop> U: [0,-1) S: [-9223372036854775808,9223372036854775807) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }27; CHECK-NEXT:  Determining loop execution counts for: @test_step2_div428; CHECK-NEXT:  Loop %loop: Unpredictable backedge-taken count.29; CHECK-NEXT:  Loop %loop: Unpredictable constant max backedge-taken count.30; CHECK-NEXT:  Loop %loop: Unpredictable symbolic max backedge-taken count.31;32entry:33  br label %loop34 35loop:36  %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]37  %div.0 = udiv i64 %iv, 438  call void @use(i64 %div.0)39  %iv.1 = add i64 %iv, 140  %div.1 = udiv i64 %iv.1, 441  call void @use(i64 %div.1)42  %iv.2 = add i64 %iv, 243  %div.2 = udiv i64 %iv.2, 444  call void @use(i64 %div.2)45  %iv.neg.1 = add i64 %iv, -146  %div.neg.1 = udiv i64 %iv.neg.1, 447  call void @use(i64 %div.neg.1)48  %iv.next = add i64 %iv, 249  %cond = icmp slt i64 %iv, %n50  br i1 %cond, label %loop, label %exit51 52exit:53  ret void54}55 56define void @test_step3_div6(i64 %n) {57; CHECK-LABEL: 'test_step3_div6'58; CHECK-NEXT:  Classifying expressions for: @test_step3_div659; CHECK-NEXT:    %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]60; CHECK-NEXT:    --> {0,+,3}<%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }61; CHECK-NEXT:    %div.0 = udiv i64 %iv, 662; CHECK-NEXT:    --> ({0,+,3}<%loop> /u 6) U: [0,3074457345618258603) S: [0,3074457345618258603) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }63; CHECK-NEXT:    %iv.1 = add i64 %iv, 164; CHECK-NEXT:    --> {1,+,3}<%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }65; CHECK-NEXT:    %div.1 = udiv i64 %iv.1, 666; CHECK-NEXT:    --> ({1,+,3}<%loop> /u 6) U: [0,3074457345618258603) S: [0,3074457345618258603) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }67; CHECK-NEXT:    %iv.2 = add i64 %iv, 268; CHECK-NEXT:    --> {2,+,3}<%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }69; CHECK-NEXT:    %div.2 = udiv i64 %iv.2, 670; CHECK-NEXT:    --> ({2,+,3}<%loop> /u 6) U: [0,3074457345618258603) S: [0,3074457345618258603) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }71; CHECK-NEXT:    %iv.neg.1 = add i64 %iv, -172; CHECK-NEXT:    --> {-1,+,3}<%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }73; CHECK-NEXT:    %div.neg.1 = udiv i64 %iv.neg.1, 674; CHECK-NEXT:    --> ({-1,+,3}<%loop> /u 6) U: [0,3074457345618258603) S: [0,3074457345618258603) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }75; CHECK-NEXT:    %iv.next = add i64 %iv, 376; CHECK-NEXT:    --> {3,+,3}<%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }77; CHECK-NEXT:  Determining loop execution counts for: @test_step3_div678; CHECK-NEXT:  Loop %loop: Unpredictable backedge-taken count.79; CHECK-NEXT:  Loop %loop: Unpredictable constant max backedge-taken count.80; CHECK-NEXT:  Loop %loop: Unpredictable symbolic max backedge-taken count.81;82entry:83  br label %loop84 85loop:86  %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]87  %div.0 = udiv i64 %iv, 688  call void @use(i64 %div.0)89  %iv.1 = add i64 %iv, 190  %div.1 = udiv i64 %iv.1, 691  call void @use(i64 %div.1)92  %iv.2 = add i64 %iv, 293  %div.2 = udiv i64 %iv.2, 694  call void @use(i64 %div.2)95  %iv.neg.1 = add i64 %iv, -196  %div.neg.1 = udiv i64 %iv.neg.1, 697  call void @use(i64 %div.neg.1)98  %iv.next = add i64 %iv, 399  %cond = icmp slt i64 %iv, %n100  br i1 %cond, label %loop, label %exit101 102exit:103  ret void104}105 106 107define void @test_step4_div4(i64 %n) {108; CHECK-LABEL: 'test_step4_div4'109; CHECK-NEXT:  Classifying expressions for: @test_step4_div4110; CHECK-NEXT:    %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]111; CHECK-NEXT:    --> {0,+,4}<%loop> U: [0,-3) S: [-9223372036854775808,9223372036854775805) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }112; CHECK-NEXT:    %div.0 = udiv i64 %iv, 4113; CHECK-NEXT:    --> ({0,+,4}<%loop> /u 4) U: [0,4611686018427387904) S: [0,4611686018427387904) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }114; CHECK-NEXT:    %iv.1 = add i64 %iv, 1115; CHECK-NEXT:    --> {1,+,4}<%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }116; CHECK-NEXT:    %div.1 = udiv i64 %iv.1, 4117; CHECK-NEXT:    --> ({1,+,4}<%loop> /u 4) U: [0,4611686018427387904) S: [0,4611686018427387904) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }118; CHECK-NEXT:    %iv.2 = add i64 %iv, 2119; CHECK-NEXT:    --> {2,+,4}<%loop> U: [0,-1) S: [-9223372036854775808,9223372036854775807) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }120; CHECK-NEXT:    %div.2 = udiv i64 %iv.2, 4121; CHECK-NEXT:    --> ({2,+,4}<%loop> /u 4) U: [0,4611686018427387904) S: [0,4611686018427387904) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }122; CHECK-NEXT:    %iv.3 = add i64 %iv, 3123; CHECK-NEXT:    --> {3,+,4}<%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }124; CHECK-NEXT:    %div.3 = udiv i64 %iv.3, 4125; CHECK-NEXT:    --> ({3,+,4}<%loop> /u 4) U: [0,4611686018427387904) S: [0,4611686018427387904) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }126; CHECK-NEXT:    %iv.4 = add i64 %iv, 4127; CHECK-NEXT:    --> {4,+,4}<%loop> U: [0,-3) S: [-9223372036854775808,9223372036854775805) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }128; CHECK-NEXT:    %div.4 = udiv i64 %iv.4, 4129; CHECK-NEXT:    --> ({4,+,4}<%loop> /u 4) U: [0,4611686018427387904) S: [0,4611686018427387904) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }130; CHECK-NEXT:    %iv.5 = add i64 %iv, 5131; CHECK-NEXT:    --> {5,+,4}<%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }132; CHECK-NEXT:    %div.5 = udiv i64 %iv.5, 4133; CHECK-NEXT:    --> ({5,+,4}<%loop> /u 4) U: [0,4611686018427387904) S: [0,4611686018427387904) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }134; CHECK-NEXT:    %iv.next = add i64 %iv, 4135; CHECK-NEXT:    --> {4,+,4}<%loop> U: [0,-3) S: [-9223372036854775808,9223372036854775805) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }136; CHECK-NEXT:  Determining loop execution counts for: @test_step4_div4137; CHECK-NEXT:  Loop %loop: Unpredictable backedge-taken count.138; CHECK-NEXT:  Loop %loop: Unpredictable constant max backedge-taken count.139; CHECK-NEXT:  Loop %loop: Unpredictable symbolic max backedge-taken count.140;141entry:142  br label %loop143 144loop:145  %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]146  %div.0 = udiv i64 %iv, 4147  call void @use(i64 %div.0)148  %iv.1 = add i64 %iv, 1149  %div.1 = udiv i64 %iv.1, 4150  call void @use(i64 %div.1)151  %iv.2 = add i64 %iv, 2152  %div.2 = udiv i64 %iv.2, 4153  call void @use(i64 %div.2)154  %iv.3 = add i64 %iv, 3155  %div.3 = udiv i64 %iv.3, 4156  call void @use(i64 %div.3)157  %iv.4 = add i64 %iv, 4158  %div.4 = udiv i64 %iv.4, 4159  call void @use(i64 %div.4)160  %iv.5 = add i64 %iv, 5161  %div.5 = udiv i64 %iv.5, 4162  call void @use(i64 %div.5)163  %iv.next = add i64 %iv, 4164  %cond = icmp slt i64 %iv, %n165  br i1 %cond, label %loop, label %exit166 167exit:168  ret void169}170