brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.3 KiB · 10b299f Raw
105 lines · plain
1; RUN: llc < %s -mcpu=cortex-a57 -mattr=+neon -fp-contract=fast -regalloc=pbqp -pbqp-coalescing | FileCheck %s --check-prefix CHECK --check-prefix CHECK-EVEN2; RUN: llc < %s -mcpu=cortex-a57 -mattr=+neon -fp-contract=fast -regalloc=pbqp -pbqp-coalescing | FileCheck %s --check-prefix CHECK --check-prefix CHECK-ODD3;4; Test PBQP is able to fulfill the accumulator chaining constraint.5target datalayout = "e-m:e-i64:64-i128:128-n32:64-S128"6target triple = "aarch64"7 8; CHECK-LABEL: fir9; CHECK-EVEN: fmadd {{d[0-9]*[02468]}}, {{d[0-9]*}}, {{d[0-9]*}}, {{d[0-9]*[02468]}}10; CHECK-EVEN: fmadd {{d[0-9]*[02468]}}, {{d[0-9]*}}, {{d[0-9]*}}, {{d[0-9]*[02468]}}11; CHECK-EVEN: fmadd {{d[0-9]*[02468]}}, {{d[0-9]*}}, {{d[0-9]*}}, {{d[0-9]*[02468]}}12; CHECK-EVEN: fmadd {{d[0-9]*[02468]}}, {{d[0-9]*}}, {{d[0-9]*}}, {{d[0-9]*[02468]}}13; CHECK-EVEN: fmadd {{d[0-9]*[02468]}}, {{d[0-9]*}}, {{d[0-9]*}}, {{d[0-9]*[02468]}}14; CHECK-EVEN: fmadd {{d[0-9]*[02468]}}, {{d[0-9]*}}, {{d[0-9]*}}, {{d[0-9]*[02468]}}15; CHECK-EVEN: fmadd {{d[0-9]*[02468]}}, {{d[0-9]*}}, {{d[0-9]*}}, {{d[0-9]*[02468]}}16; CHECK-ODD: fmadd {{d[0-9]*[13579]}}, {{d[0-9]*}}, {{d[0-9]*}}, {{d[0-9]*[13579]}}17; CHECK-ODD: fmadd {{d[0-9]*[13579]}}, {{d[0-9]*}}, {{d[0-9]*}}, {{d[0-9]*[13579]}}18; CHECK-ODD: fmadd {{d[0-9]*[13579]}}, {{d[0-9]*}}, {{d[0-9]*}}, {{d[0-9]*[13579]}}19; CHECK-ODD: fmadd {{d[0-9]*[13579]}}, {{d[0-9]*}}, {{d[0-9]*}}, {{d[0-9]*[13579]}}20; CHECK-ODD: fmadd {{d[0-9]*[13579]}}, {{d[0-9]*}}, {{d[0-9]*}}, {{d[0-9]*[13579]}}21; CHECK-ODD: fmadd {{d[0-9]*[13579]}}, {{d[0-9]*}}, {{d[0-9]*}}, {{d[0-9]*[13579]}}22; CHECK-ODD: fmadd {{d[0-9]*[13579]}}, {{d[0-9]*}}, {{d[0-9]*}}, {{d[0-9]*[13579]}}23define void @fir(ptr nocapture %rx, ptr nocapture %ry, ptr nocapture %c, ptr nocapture %x, ptr nocapture %y) {24entry:25  %0 = load double, ptr %c, align 826  %1 = load double, ptr %x, align 827  %mul = fmul fast double %1, %028  %2 = load double, ptr %y, align 829  %mul7 = fmul fast double %2, %030  %arrayidx.1 = getelementptr inbounds double, ptr %c, i64 131  %3 = load double, ptr %arrayidx.1, align 832  %arrayidx2.1 = getelementptr inbounds double, ptr %x, i64 133  %4 = load double, ptr %arrayidx2.1, align 834  %mul.1 = fmul fast double %4, %335  %add.1 = fadd fast double %mul.1, %mul36  %arrayidx6.1 = getelementptr inbounds double, ptr %y, i64 137  %5 = load double, ptr %arrayidx6.1, align 838  %mul7.1 = fmul fast double %5, %339  %add8.1 = fadd fast double %mul7.1, %mul740  %arrayidx.2 = getelementptr inbounds double, ptr %c, i64 241  %6 = load double, ptr %arrayidx.2, align 842  %arrayidx2.2 = getelementptr inbounds double, ptr %x, i64 243  %7 = load double, ptr %arrayidx2.2, align 844  %mul.2 = fmul fast double %7, %645  %add.2 = fadd fast double %mul.2, %add.146  %arrayidx6.2 = getelementptr inbounds double, ptr %y, i64 247  %8 = load double, ptr %arrayidx6.2, align 848  %mul7.2 = fmul fast double %8, %649  %add8.2 = fadd fast double %mul7.2, %add8.150  %arrayidx.3 = getelementptr inbounds double, ptr %c, i64 351  %9 = load double, ptr %arrayidx.3, align 852  %arrayidx2.3 = getelementptr inbounds double, ptr %x, i64 353  %10 = load double, ptr %arrayidx2.3, align 854  %mul.3 = fmul fast double %10, %955  %add.3 = fadd fast double %mul.3, %add.256  %arrayidx6.3 = getelementptr inbounds double, ptr %y, i64 357  %11 = load double, ptr %arrayidx6.3, align 858  %mul7.3 = fmul fast double %11, %959  %add8.3 = fadd fast double %mul7.3, %add8.260  %arrayidx.4 = getelementptr inbounds double, ptr %c, i64 461  %12 = load double, ptr %arrayidx.4, align 862  %arrayidx2.4 = getelementptr inbounds double, ptr %x, i64 463  %13 = load double, ptr %arrayidx2.4, align 864  %mul.4 = fmul fast double %13, %1265  %add.4 = fadd fast double %mul.4, %add.366  %arrayidx6.4 = getelementptr inbounds double, ptr %y, i64 467  %14 = load double, ptr %arrayidx6.4, align 868  %mul7.4 = fmul fast double %14, %1269  %add8.4 = fadd fast double %mul7.4, %add8.370  %arrayidx.5 = getelementptr inbounds double, ptr %c, i64 571  %15 = load double, ptr %arrayidx.5, align 872  %arrayidx2.5 = getelementptr inbounds double, ptr %x, i64 573  %16 = load double, ptr %arrayidx2.5, align 874  %mul.5 = fmul fast double %16, %1575  %add.5 = fadd fast double %mul.5, %add.476  %arrayidx6.5 = getelementptr inbounds double, ptr %y, i64 577  %17 = load double, ptr %arrayidx6.5, align 878  %mul7.5 = fmul fast double %17, %1579  %add8.5 = fadd fast double %mul7.5, %add8.480  %arrayidx.6 = getelementptr inbounds double, ptr %c, i64 681  %18 = load double, ptr %arrayidx.6, align 882  %arrayidx2.6 = getelementptr inbounds double, ptr %x, i64 683  %19 = load double, ptr %arrayidx2.6, align 884  %mul.6 = fmul fast double %19, %1885  %add.6 = fadd fast double %mul.6, %add.586  %arrayidx6.6 = getelementptr inbounds double, ptr %y, i64 687  %20 = load double, ptr %arrayidx6.6, align 888  %mul7.6 = fmul fast double %20, %1889  %add8.6 = fadd fast double %mul7.6, %add8.590  %arrayidx.7 = getelementptr inbounds double, ptr %c, i64 791  %21 = load double, ptr %arrayidx.7, align 892  %arrayidx2.7 = getelementptr inbounds double, ptr %x, i64 793  %22 = load double, ptr %arrayidx2.7, align 894  %mul.7 = fmul fast double %22, %2195  %add.7 = fadd fast double %mul.7, %add.696  %arrayidx6.7 = getelementptr inbounds double, ptr %y, i64 797  %23 = load double, ptr %arrayidx6.7, align 898  %mul7.7 = fmul fast double %23, %2199  %add8.7 = fadd fast double %mul7.7, %add8.6100  store double %add.7, ptr %rx, align 8101  store double %add8.7, ptr %ry, align 8102  ret void103}104 105