brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.6 KiB · 1920256 Raw
136 lines · plain
1; RUN: llc < %s -mtriple=thumbv7-apple-ios7.0.0 -float-abi=hard -mcpu=cortex-a9 -misched-postra -enable-misched -pre-RA-sched=source -scheditins=false | FileCheck %s2;3; Test MI-Sched suppory latency based stalls on in in-order pipeline4; using the new machine model.5 6target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:32:64-v128:32:128-a0:0:32-n32-S32"7 8; Don't be too strict with the top of the schedule, but most of it9; should be nicely pipelined.10;11; CHECK: saxpy10:12; CHECK: vldr13; CHECK: vldr14; CHECK: vldr15; CHECK: vldr16; CHECK: vldr17; CHECK-NEXT: vldr18; CHECK-NEXT: vmul19; CHECK-NEXT: vadd20; CHECK-NEXT: vadd21; CHECK-NEXT: vldr22; CHECK-NEXT: vldr23; CHECK-NEXT: vadd24; CHECK-NEXT: vadd25; CHECK-NEXT: vmul26; CHECK-NEXT: vldr27; CHECK-NEXT: vadd28; CHECK-NEXT: vadd29; CHECK-NEXT: vldr30; CHECK-NEXT: vmul31; CHECK-NEXT: vldr32; CHECK-NEXT: vadd33; CHECK-NEXT: vldr34; CHECK-NEXT: vadd35; CHECK-NEXT: vldr36; CHECK-NEXT: vmul37; CHECK-NEXT: vadd38; CHECK-NEXT: vldr39; CHECK-NEXT: vadd40; CHECK-NEXT: vldr41; CHECK-NEXT: vmul42; CHECK-NEXT: vadd43; CHECK-NEXT: vldr44; CHECK-NEXT: vadd45; CHECK-NEXT: vldr46; CHECK-NEXT: vmul47; CHECK-NEXT: vadd48; CHECK-NEXT: vldr49; CHECK-NEXT: vadd50; CHECK-NEXT: vldr51; CHECK-NEXT: vmul52; CHECK-NEXT: vadd53; CHECK-NEXT: vldr54; CHECK-NEXT: vmul55; CHECK-NEXT: vadd56; CHECK-NEXT: vldr57; CHECK-NEXT: vadd58; CHECK-NEXT: vadd59; CHECK-NEXT: vadd60; CHECK-NEXT: vmov61; CHECK-NEXT: bx62;63; This accumulates a sum rather than storing each result.64define float @saxpy10(ptr nocapture readonly %data1, ptr nocapture readonly %data2, float %a) {65entry:66  %0 = load float, ptr %data1, align 467  %mul = fmul float %0, %a68  %1 = load float, ptr %data2, align 469  %add = fadd float %mul, %170  %add2 = fadd float %add, 0.000000e+0071  %arrayidx.1 = getelementptr inbounds float, ptr %data1, i32 172  %2 = load float, ptr %arrayidx.1, align 473  %mul.1 = fmul float %2, %a74  %arrayidx1.1 = getelementptr inbounds float, ptr %data2, i32 175  %3 = load float, ptr %arrayidx1.1, align 476  %add.1 = fadd float %mul.1, %377  %add2.1 = fadd float %add2, %add.178  %arrayidx.2 = getelementptr inbounds float, ptr %data1, i32 279  %4 = load float, ptr %arrayidx.2, align 480  %mul.2 = fmul float %4, %a81  %arrayidx1.2 = getelementptr inbounds float, ptr %data2, i32 282  %5 = load float, ptr %arrayidx1.2, align 483  %add.2 = fadd float %mul.2, %584  %add2.2 = fadd float %add2.1, %add.285  %arrayidx.3 = getelementptr inbounds float, ptr %data1, i32 386  %6 = load float, ptr %arrayidx.3, align 487  %mul.3 = fmul float %6, %a88  %arrayidx1.3 = getelementptr inbounds float, ptr %data2, i32 389  %7 = load float, ptr %arrayidx1.3, align 490  %add.3 = fadd float %mul.3, %791  %add2.3 = fadd float %add2.2, %add.392  %arrayidx.4 = getelementptr inbounds float, ptr %data1, i32 493  %8 = load float, ptr %arrayidx.4, align 494  %mul.4 = fmul float %8, %a95  %arrayidx1.4 = getelementptr inbounds float, ptr %data2, i32 496  %9 = load float, ptr %arrayidx1.4, align 497  %add.4 = fadd float %mul.4, %998  %add2.4 = fadd float %add2.3, %add.499  %arrayidx.5 = getelementptr inbounds float, ptr %data1, i32 5100  %10 = load float, ptr %arrayidx.5, align 4101  %mul.5 = fmul float %10, %a102  %arrayidx1.5 = getelementptr inbounds float, ptr %data2, i32 5103  %11 = load float, ptr %arrayidx1.5, align 4104  %add.5 = fadd float %mul.5, %11105  %add2.5 = fadd float %add2.4, %add.5106  %arrayidx.6 = getelementptr inbounds float, ptr %data1, i32 6107  %12 = load float, ptr %arrayidx.6, align 4108  %mul.6 = fmul float %12, %a109  %arrayidx1.6 = getelementptr inbounds float, ptr %data2, i32 6110  %13 = load float, ptr %arrayidx1.6, align 4111  %add.6 = fadd float %mul.6, %13112  %add2.6 = fadd float %add2.5, %add.6113  %arrayidx.7 = getelementptr inbounds float, ptr %data1, i32 7114  %14 = load float, ptr %arrayidx.7, align 4115  %mul.7 = fmul float %14, %a116  %arrayidx1.7 = getelementptr inbounds float, ptr %data2, i32 7117  %15 = load float, ptr %arrayidx1.7, align 4118  %add.7 = fadd float %mul.7, %15119  %add2.7 = fadd float %add2.6, %add.7120  %arrayidx.8 = getelementptr inbounds float, ptr %data1, i32 8121  %16 = load float, ptr %arrayidx.8, align 4122  %mul.8 = fmul float %16, %a123  %arrayidx1.8 = getelementptr inbounds float, ptr %data2, i32 8124  %17 = load float, ptr %arrayidx1.8, align 4125  %add.8 = fadd float %mul.8, %17126  %add2.8 = fadd float %add2.7, %add.8127  %arrayidx.9 = getelementptr inbounds float, ptr %data1, i32 9128  %18 = load float, ptr %arrayidx.9, align 4129  %mul.9 = fmul float %18, %a130  %arrayidx1.9 = getelementptr inbounds float, ptr %data2, i32 9131  %19 = load float, ptr %arrayidx1.9, align 4132  %add.9 = fadd float %mul.9, %19133  %add2.9 = fadd float %add2.8, %add.9134  ret float %add2.9135}136