brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.6 KiB · afc989c Raw
111 lines · plain
1# RUN: llc -mtriple=hexagon -run-pass pipeliner -debug-only=pipeliner %s -o /dev/null 2>&1 -pipeliner-experimental-cg=true | FileCheck %s2# REQUIRES: asserts3 4# Test that the loop carried dependence check correctly identifies a recurrence.5 6# CHECK: Overlap check:7# CHECK-NEXT:   BaseMI:   S2_storerh_io %{{[0-9]+}}:intregs, 0, %{{[0-9]+}}:intregs :: (store (s16) into %ir.lsr.iv24)8# CHECK-NEXT:     Base + 0 + I * 4, Len: 29# CHECK-NEXT:   OtherMI:   %{{[0-9]+}}:intregs = L2_loadrh_io %{{[0-9]+}}:intregs, -8 :: (load (s16) from %ir.cgep10)10# CHECK-NEXT:     Base + -8 + I * 4, Len: 211# CHECK-NEXT:   Result: Overlap12 13# CHECK: Rec NodeSet14# CHECK: Rec NodeSet15# CHECK: Rec NodeSet16# CHECK: Rec NodeSet17# CHECK-NEXT: SU(4)18# CHECK-NEXT: SU(6)19 20--- |21 22  %struct.A = type { i16, i16 }23 24  define i32 @test(ptr noalias nocapture %s, ptr noalias nocapture readonly %r, i32 %n) {25  entry:26    %cmp19 = icmp eq i32 %n, 227    br i1 %cmp19, label %for.end, label %for.body.preheader28 29  for.body.preheader:30    %0 = add i32 %n, -231    %cgep = getelementptr %struct.A, ptr %s, i32 2, i32 132    %scevgep1 = bitcast ptr %cgep to ptr33    %cgep9 = getelementptr i16, ptr %r, i32 234    br label %for.body35 36  for.body:37    %lsr.iv7 = phi ptr [ %cgep9, %for.body.preheader ], [ %cgep12, %for.body ]38    %lsr.iv2 = phi ptr [ %scevgep1, %for.body.preheader ], [ %cgep11, %for.body ]39    %lsr.iv = phi i32 [ %0, %for.body.preheader ], [ %lsr.iv.next, %for.body ]40    %sum.020 = phi i32 [ %add7, %for.body ], [ 0, %for.body.preheader ]41    %lsr.iv24 = bitcast ptr %lsr.iv2 to ptr42    %1 = load i16, ptr %lsr.iv7, align 243    %conv = sext i16 %1 to i3244    %cgep10 = getelementptr i16, ptr %lsr.iv24, i32 -445    %2 = load i16, ptr %cgep10, align 246    %conv2 = sext i16 %2 to i3247    %add = add i16 %1, 1048    store i16 %add, ptr %lsr.iv24, align 249    %add6 = add i32 %sum.020, %conv50    %add7 = add i32 %add6, %conv251    %lsr.iv.next = add i32 %lsr.iv, -152    %cmp = icmp eq i32 %lsr.iv.next, 053    %cgep11 = getelementptr %struct.A, ptr %lsr.iv2, i32 154    %cgep12 = getelementptr i16, ptr %lsr.iv7, i32 155    br i1 %cmp, label %for.end, label %for.body56 57  for.end:58    %sum.0.lcssa = phi i32 [ 0, %entry ], [ %add7, %for.body ]59    ret i32 %sum.0.lcssa60  }61 62...63---64name:            test65tracksRegLiveness: true66 67body:             |68  bb.0:69    successors: %bb.3, %bb.170    liveins: $r0, $r1, $r271 72    %14:intregs = COPY $r273    %13:intregs = COPY $r174    %12:intregs = COPY $r075    %16:predregs = C2_cmpeqi %14, 276    %15:intregs = A2_tfrsi 077    J2_jumpt killed %16, %bb.3, implicit-def dead $pc78    J2_jump %bb.1, implicit-def dead $pc79 80  bb.1:81    successors: %bb.282 83    %0:intregs = A2_addi %14, -284    %1:intregs = A2_addi %12, 1085    %2:intregs = A2_addi %13, 486    %17:intregs = A2_tfrsi 087    %23:intregs = COPY %088    J2_loop0r %bb.2, %23, implicit-def $lc0, implicit-def $sa0, implicit-def $usr89 90  bb.2 (machine-block-address-taken):91    successors: %bb.3, %bb.292 93    %3:intregs = PHI %2, %bb.1, %10, %bb.294    %4:intregs = PHI %1, %bb.1, %9, %bb.295    %6:intregs = PHI %17, %bb.1, %7, %bb.296    %18:intregs, %10:intregs = L2_loadrh_pi %3, 2 :: (load (s16) from %ir.lsr.iv7)97    %19:intregs = L2_loadrh_io %4, -8 :: (load (s16) from %ir.cgep10)98    %20:intregs = A2_addi %18, 1099    S2_storerh_io %4, 0, killed %20 :: (store (s16) into %ir.lsr.iv24)100    %7:intregs = M2_acci %19, %6, %18101    %9:intregs = A2_addi %4, 4102    ENDLOOP0 %bb.2, implicit-def $pc, implicit-def $lc0, implicit $sa0, implicit $lc0103    J2_jump %bb.3, implicit-def dead $pc104 105  bb.3:106    %11:intregs = PHI %15, %bb.0, %7, %bb.2107    $r0 = COPY %11108    PS_jmpret $r31, implicit-def dead $pc, implicit $r0109 110...111