brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · e358876 Raw
48 lines · plain
1; RUN: opt < %s -S -passes="default<O2>" -unroll-runtime=true -unroll-threshold-default=0 -unroll-threshold-aggressive=300 | FileCheck %s -check-prefix=O22; RUN: opt < %s -S -passes="default<O3>" -unroll-runtime=true -unroll-threshold-default=0 -unroll-threshold-aggressive=300 | FileCheck %s -check-prefix=O33; RUN: opt < %s -S -passes="default<Os>" -unroll-runtime=true -unroll-threshold-default=0 -unroll-threshold-aggressive=300 | FileCheck %s -check-prefix=Os4; RUN: opt < %s -S -passes="default<Oz>" -unroll-runtime=true -unroll-threshold-default=0 -unroll-threshold-aggressive=300 | FileCheck %s -check-prefix=Oz5 6; Check that Os and Oz are optimized like O2, not like O3. To easily highlight7; the behavior, we artificially disable unrolling for anything but O3 by setting8; the default threshold to 0.9 10; O3:     loop1.preheader11; O2-NOT: loop1.preheader12; Os-NOT: loop1.preheader13; Oz-NOT: loop1.preheader14 15define void @unroll(i32 %iter, ptr %addr1, ptr %addr2) nounwind {16entry:17  br label %loop118 19loop1:20  %iv1 = phi i32 [ 0, %entry ], [ %inc1, %loop1.latch ]21  %offset1 = getelementptr i32, ptr %addr1, i32 %iv122  store i32 %iv1, ptr %offset1, align 423  br label %loop2.header24 25loop2.header:26  %e = icmp uge i32 %iter, 127  br i1 %e, label %loop2, label %exit228 29loop2:30  %iv2 = phi i32 [ 0, %loop2.header ], [ %inc2, %loop2 ]31  %offset2 = getelementptr i32, ptr %addr2, i32 %iv232  store i32 %iv2, ptr %offset2, align 433  %inc2 = add i32 %iv2, 134  %exitcnd2 = icmp uge i32 %inc2, %iter35  br i1 %exitcnd2, label %exit2, label %loop236 37exit2:38  br label %loop1.latch39 40loop1.latch:41  %inc1 = add i32 %iv1, 142  %exitcnd1 = icmp uge i32 %inc1, 102443  br i1 %exitcnd1, label %exit, label %loop144 45exit:46  ret void47}48