brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.5 KiB · 19bc481 Raw
74 lines · plain
1; RUN: opt -disable-output "-passes=print<scalar-evolution>" < %s 2>&1 | FileCheck %s2 3define void @single_loop(ptr %buf, i32 %start) {4; CHECK-LABEL: Classifying expressions for: @single_loop5 entry:6  %val = add i32 %start, 4007  br label %loop8 9 loop:10  %counter = phi i32 [ 0, %entry ], [ %counter.inc, %loop ]11  %idx = phi i32 [ %start, %entry ], [ %idx.inc, %loop ]12 13; CHECK:  %counter = phi i32 [ 0, %entry ], [ %counter.inc, %loop ]14; CHECK-NEXT:  -->  {{.*}} LoopDispositions: { %loop: Computable }15; CHECK:  %idx = phi i32 [ %start, %entry ], [ %idx.inc, %loop ]16; CHECK-NEXT:  -->  {{.*}} LoopDispositions: { %loop: Computable }17; CHECK:  %val2 = add i32 %start, 40018; CHECK-NEXT:  -->  {{.*}} LoopDispositions: { %loop: Invariant }19; CHECK:  %idx.inc = add nsw i32 %idx, 120; CHECK-NEXT:  -->  {{.*}} LoopDispositions: { %loop: Computable }21; CHECK:  %val3 = load volatile i32, ptr %buf22; CHECK-NEXT:  -->  {{.*}} LoopDispositions: { %loop: Variant }23 24  %val2 = add i32 %start, 40025  %idx.inc = add nsw i32 %idx, 126  %idx.inc.sext = sext i32 %idx.inc to i6427  %condition = icmp eq i32 %counter, 128  %counter.inc = add i32 %counter, 129  %val3 = load volatile i32, ptr %buf30  br i1 %condition, label %exit, label %loop31 32 exit:33  ret void34}35 36 37define void @nested_loop(ptr %p, i64 %m) {38; CHECK-LABEL: Classifying expressions for: @nested_loop39 40; CHECK:  %j = phi i64 [ 0, %entry ], [ %j.next, %outer.latch ]41; CHECK-NEXT:  -->  {{.*}} LoopDispositions: { %outer.loop: Computable, %bb: Invariant }42; CHECK:  %i = phi i64 [ 0, %outer.loop ], [ %i.next, %bb ]43; CHECK-NEXT:  -->  {{.*}} LoopDispositions: { %bb: Computable, %outer.loop: Variant }44; CHECK:  %j.add = add i64 %j, 10045; CHECK-NEXT:  -->  {{.*}} LoopDispositions: { %bb: Invariant, %outer.loop: Computable }46; CHECK:  %i.next = add i64 %i, 147; CHECK-NEXT:  -->  {{.*}} LoopDispositions: { %bb: Computable, %outer.loop: Variant }48; CHECK:  %j.next = add i64 %j, 9149; CHECK-NEXT:  -->  {{.*}} LoopDispositions: { %outer.loop: Computable, %bb: Invariant }50 51entry:52  %k = icmp sgt i64 %m, 053  br i1 %k, label %outer.loop, label %return54 55outer.loop:56  %j = phi i64 [ 0, %entry ], [ %j.next, %outer.latch ]57  br label %bb58 59bb:60  %i = phi i64 [ 0, %outer.loop ], [ %i.next, %bb ]61  %j.add = add i64 %j, 10062  %i.next = add i64 %i, 163  %exitcond = icmp eq i64 %i.next, 9164  br i1 %exitcond, label %outer.latch, label %bb65 66outer.latch:67  %j.next = add i64 %j, 9168  %h = icmp eq i64 %j.next, %m69  br i1 %h, label %return, label %outer.loop70 71return:72  ret void73}74