brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.2 KiB · abcc566 Raw
71 lines · plain
1 2; RUN: opt %s -S --passes=loop-unroll -unroll-runtime=true -unroll-count=4 -unroll-remainder -o - \3; RUN: | FileCheck %s4 5;; Check atoms are remapped for runtime unrolling.6 7; CHECK: for.body.epil:8; CHECK-NEXT: store i64 %indvars.iv.epil.init, ptr %p, align 4, !dbg [[G2R1:!.*]]9 10; CHECK: for.body.epil.1:11; CHECK-NEXT: store i64 %indvars.iv.next.epil, ptr %p, align 4, !dbg [[G3R1:!.*]]12 13; CHECK: for.body.epil.2:14; CHECK-NEXT: store i64 %indvars.iv.next.epil.1, ptr %p, align 4, !dbg [[G4R1:!.*]]15 16; CHECK: for.body:17; CHECK-NEXT: %indvars.iv = phi i64 [ 0, %for.body.lr.ph.new ], [ %indvars.iv.next.3, %for.body ]18; CHECK-NEXT: %niter = phi i64 [ 0, %for.body.lr.ph.new ], [ %niter.next.3, %for.body ]19; CHECK-NEXT: store i64 %indvars.iv, ptr %p, align 4, !dbg [[G1R1:!.*]]20; CHECK-NEXT: %indvars.iv.next = add nuw nsw i64 %indvars.iv, 121; CHECK-NEXT: store i64 %indvars.iv.next, ptr %p, align 4, !dbg [[G5R1:!.*]]22; CHECK-NEXT: %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 223; CHECK-NEXT: store i64 %indvars.iv.next.1, ptr %p, align 4, !dbg [[G6R1:!.*]]24; CHECK-NEXT: %indvars.iv.next.2 = add nuw nsw i64 %indvars.iv, 325; CHECK-NEXT: store i64 %indvars.iv.next.2, ptr %p, align 4, !dbg [[G7R1:!.*]]26; CHECK-NEXT: %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 427 28; CHECK: distinct !DISubprogram(name: "unroll", {{.*}}keyInstructions: true)29; CHECK: [[G2R1]] = !DILocation({{.*}}, atomGroup: 2, atomRank: 1)30; CHECK: [[G3R1]] = !DILocation({{.*}}, atomGroup: 3, atomRank: 1)31; CHECK: [[G4R1]] = !DILocation({{.*}}, atomGroup: 4, atomRank: 1)32; CHECK: [[G1R1]] = !DILocation({{.*}}, atomGroup: 1, atomRank: 1)33; CHECK: [[G5R1]] = !DILocation({{.*}}, atomGroup: 5, atomRank: 1)34; CHECK: [[G6R1]] = !DILocation({{.*}}, atomGroup: 6, atomRank: 1)35; CHECK: [[G7R1]] = !DILocation({{.*}}, atomGroup: 7, atomRank: 1)36 37define i32 @unroll(ptr %p, i32 %N) local_unnamed_addr !dbg !5 {38entry:39  %cmp9 = icmp eq i32 %N, 040  br i1 %cmp9, label %for.cond.cleanup, label %for.body.lr.ph41 42for.body.lr.ph:                                   ; preds = %entry43  %wide.trip.count = zext i32 %N to i6444  br label %for.body45 46for.cond.cleanup:                                 ; preds = %for.body, %entry47  %r = phi i32 [ 0, %entry ], [ 1, %for.body ]48  ret i32 %r49 50for.body:                                         ; preds = %for.body, %for.body.lr.ph51  %indvars.iv = phi i64 [ 0, %for.body.lr.ph ], [ %indvars.iv.next, %for.body ]52  store i64 %indvars.iv, ptr %p, !dbg !853  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 154  %exitcond = icmp eq i64 %indvars.iv.next, %wide.trip.count55  br i1 %exitcond, label %for.cond.cleanup, label %for.body56}57 58!llvm.dbg.cu = !{!0}59!llvm.debugify = !{!2, !3}60!llvm.module.flags = !{!4}61 62!0 = distinct !DICompileUnit(language: DW_LANG_C, file: !1, producer: "debugify", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug)63!1 = !DIFile(filename: "test.ll", directory: "/")64!2 = !{i32 17}65!3 = !{i32 0}66!4 = !{i32 2, !"Debug Info Version", i32 3}67!5 = distinct !DISubprogram(name: "unroll", linkageName: "unroll", scope: null, file: !1, line: 1, type: !6, scopeLine: 1, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, keyInstructions: true)68!6 = !DISubroutineType(types: !7)69!7 = !{}70!8 = !DILocation(line: 1, column: 1, scope: !5, atomGroup: 1, atomRank: 1)71