brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · a0f8374 Raw
88 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=thumbv8.1-m.main-none-eabi -mcpu=cortex-m55 -O3 < %s | FileCheck %s3 4define i32 @loop(ptr nocapture readonly %x) {5; CHECK-LABEL: loop:6; CHECK:       @ %bb.0: @ %entry7; CHECK-NEXT:    .save {r7, lr}8; CHECK-NEXT:    push {r7, lr}9; CHECK-NEXT:    mov.w lr, #50010; CHECK-NEXT:    mov r1, r011; CHECK-NEXT:    movs r0, #012; CHECK-NEXT:    .p2align 213; CHECK-NEXT:  .LBB0_1: @ %for.body14; CHECK-NEXT:    @ =>This Inner Loop Header: Depth=115; CHECK-NEXT:    ldr r2, [r1], #416; CHECK-NEXT:    add r0, r217; CHECK-NEXT:    le lr, .LBB0_118; CHECK-NEXT:  @ %bb.2: @ %for.cond.cleanup19; CHECK-NEXT:    pop {r7, pc}20entry:21  br label %for.body22 23for.cond.cleanup:                                 ; preds = %for.body24  ret i32 %add25 26for.body:                                         ; preds = %entry, %for.body27  %i.07 = phi i32 [ 0, %entry ], [ %inc, %for.body ]28  %s.06 = phi i32 [ 0, %entry ], [ %add, %for.body ]29  %arrayidx = getelementptr inbounds i32, ptr %x, i32 %i.0730  %0 = load i32, ptr %arrayidx, align 431  %add = add nsw i32 %0, %s.0632  %inc = add nuw nsw i32 %i.07, 133  %exitcond.not = icmp eq i32 %inc, 50034  br i1 %exitcond.not, label %for.cond.cleanup, label %for.body35}36 37define i64 @loopif(ptr nocapture readonly %x, i32 %y, i32 %n) {38; CHECK-LABEL: loopif:39; CHECK:       @ %bb.0: @ %entry40; CHECK-NEXT:    .save {r7, lr}41; CHECK-NEXT:    push {r7, lr}42; CHECK-NEXT:    cmp r2, #143; CHECK-NEXT:    blt .LBB1_444; CHECK-NEXT:  @ %bb.1: @ %for.body.lr.ph45; CHECK-NEXT:    dls lr, r246; CHECK-NEXT:    mov r12, r047; CHECK-NEXT:    movs r0, #048; CHECK-NEXT:    movs r3, #049; CHECK-NEXT:    .p2align 250; CHECK-NEXT:  .LBB1_2: @ %for.body51; CHECK-NEXT:    @ =>This Inner Loop Header: Depth=152; CHECK-NEXT:    ldr r2, [r12], #453; CHECK-NEXT:    smlal r0, r3, r2, r154; CHECK-NEXT:    le lr, .LBB1_255; CHECK-NEXT:  @ %bb.3: @ %for.cond.cleanup56; CHECK-NEXT:    mov r1, r357; CHECK-NEXT:    pop {r7, pc}58; CHECK-NEXT:    .p2align 259; CHECK-NEXT:  .LBB1_4:60; CHECK-NEXT:    movs r0, #061; CHECK-NEXT:    movs r3, #062; CHECK-NEXT:    mov r1, r363; CHECK-NEXT:    pop {r7, pc}64entry:65  %cmp7 = icmp sgt i32 %n, 066  br i1 %cmp7, label %for.body.lr.ph, label %for.cond.cleanup67 68for.body.lr.ph:                                   ; preds = %entry69  %conv1 = sext i32 %y to i6470  br label %for.body71 72for.cond.cleanup:                                 ; preds = %for.body, %entry73  %s.0.lcssa = phi i64 [ 0, %entry ], [ %add, %for.body ]74  ret i64 %s.0.lcssa75 76for.body:                                         ; preds = %for.body.lr.ph, %for.body77  %i.09 = phi i32 [ 0, %for.body.lr.ph ], [ %inc, %for.body ]78  %s.08 = phi i64 [ 0, %for.body.lr.ph ], [ %add, %for.body ]79  %arrayidx = getelementptr inbounds i32, ptr %x, i32 %i.0980  %0 = load i32, ptr %arrayidx, align 481  %conv = sext i32 %0 to i6482  %mul = mul nsw i64 %conv, %conv183  %add = add nsw i64 %mul, %s.0884  %inc = add nuw nsw i32 %i.09, 185  %exitcond.not = icmp eq i32 %inc, %n86  br i1 %exitcond.not, label %for.cond.cleanup, label %for.body87}88