87 lines · plain
1; RUN: llc -mtriple=hexagon-unknown-elf < %s | FileCheck %s2 3; CHECK-LABEL: ldf4; CHECK: memw(r{{[0-9]+}}++#4)5; CHECK: memw(r{{[0-9]+}}++#4)6define float @ldf(ptr nocapture readonly %x, ptr nocapture readonly %y) local_unnamed_addr #0 {7entry:8 br label %for.body9 10for.body:11 %arrayidx.phi = phi ptr [ %x, %entry ], [ %arrayidx.inc, %for.body ]12 %arrayidx1.phi = phi ptr [ %y, %entry ], [ %arrayidx1.inc, %for.body ]13 %i.09 = phi i32 [ 0, %entry ], [ %inc, %for.body ]14 %acc.08 = phi float [ 0.000000e+00, %entry ], [ %add, %for.body ]15 %0 = load float, ptr %arrayidx.phi, align 416 %1 = load float, ptr %arrayidx1.phi, align 417 %mul = fmul contract float %0, %118 %add = fadd contract float %acc.08, %mul19 %inc = add nuw nsw i32 %i.09, 120 %exitcond = icmp eq i32 %inc, 102421 %arrayidx.inc = getelementptr float, ptr %arrayidx.phi, i32 122 %arrayidx1.inc = getelementptr float, ptr %arrayidx1.phi, i32 123 br i1 %exitcond, label %for.end, label %for.body24 25for.end:26 ret float %add27}28 29; CHECK-LABEL: ldd30; CHECK: memd(r{{[0-9]+}}++#8)31; CHECK: memd(r{{[0-9]+}}++#8)32define double @ldd(ptr nocapture readonly %x, ptr nocapture readonly %y) local_unnamed_addr #0 {33entry:34 br label %for.body35 36for.body:37 %arrayidx.phi = phi ptr [ %x, %entry ], [ %arrayidx.inc, %for.body ]38 %arrayidx1.phi = phi ptr [ %y, %entry ], [ %arrayidx1.inc, %for.body ]39 %i.09 = phi i32 [ 0, %entry ], [ %inc, %for.body ]40 %acc.08 = phi double [ 0.000000e+00, %entry ], [ %add, %for.body ]41 %0 = load double, ptr %arrayidx.phi, align 842 %1 = load double, ptr %arrayidx1.phi, align 843 %mul = fmul contract double %0, %144 %add = fadd contract double %acc.08, %mul45 %inc = add nuw nsw i32 %i.09, 146 %exitcond = icmp eq i32 %inc, 102447 %arrayidx.inc = getelementptr double, ptr %arrayidx.phi, i32 148 %arrayidx1.inc = getelementptr double, ptr %arrayidx1.phi, i32 149 br i1 %exitcond, label %for.end, label %for.body50 51for.end:52 ret double %add53}54 55; CHECK-LABEL: stf56; CHECK: memw(r{{[0-9]+}}++#4)57define ptr @stf(ptr returned %p) local_unnamed_addr #0 {58entry:59 br label %for.body60 61for.body:62 %arrayidx.phi = phi ptr [ %arrayidx.inc, %for.body ], [ %p, %entry ]63 %call = tail call float @foof() #264 store float %call, ptr %arrayidx.phi, align 865 %arrayidx.inc = getelementptr float, ptr %arrayidx.phi, i32 166 br label %for.body67}68 69declare float @foof() local_unnamed_addr #170 71; CHECK-LABEL: std72; CHECK: memd(r{{[0-9]+}}++#8)73define ptr @std(ptr returned %p) local_unnamed_addr #0 {74entry:75 br label %for.body76 77for.body:78 %arrayidx.phi = phi ptr [ %arrayidx.inc, %for.body ], [ %p, %entry ]79 %call = tail call double @food() #280 store double %call, ptr %arrayidx.phi, align 881 %arrayidx.inc = getelementptr double, ptr %arrayidx.phi, i32 182 br label %for.body83}84 85declare double @food() local_unnamed_addr #186 87