brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.9 KiB · 9029167 Raw
226 lines · plain
1; REQUIRES: asserts2; RUN: llc < %s -mtriple=x86_64-- -mcpu=core2 -pre-RA-sched=source -enable-misched -stats 2>&1 | FileCheck %s3;4; Verify that register pressure heuristics are working in MachineScheduler.5;6; We can further reduce spills in this case with a global register7; pressure heuristic, like sethi-ullman numbers or biasing toward8; scheduled subtrees. However, these heuristics are marginally9; beneficial on x86_64 and exacerbate register pressure in other10; more complex cases.11;12; CHECK: @wrap_mul413; CHECK: 24 regalloc - Number of spills inserted14 15define void @wrap_mul4(ptr nocapture %Out, ptr nocapture %A, ptr nocapture %B) #0 {16entry:17  %0 = load double, ptr %A, align 818  %1 = load double, ptr %B, align 819  %mul.i = fmul double %0, %120  %arrayidx5.i = getelementptr inbounds [4 x double], ptr %A, i64 0, i64 121  %2 = load double, ptr %arrayidx5.i, align 822  %arrayidx7.i = getelementptr inbounds [4 x double], ptr %B, i64 1, i64 023  %3 = load double, ptr %arrayidx7.i, align 824  %mul8.i = fmul double %2, %325  %add.i = fadd double %mul.i, %mul8.i26  %arrayidx10.i = getelementptr inbounds [4 x double], ptr %A, i64 0, i64 227  %4 = load double, ptr %arrayidx10.i, align 828  %arrayidx12.i = getelementptr inbounds [4 x double], ptr %B, i64 2, i64 029  %5 = load double, ptr %arrayidx12.i, align 830  %mul13.i = fmul double %4, %531  %add14.i = fadd double %add.i, %mul13.i32  %arrayidx16.i = getelementptr inbounds [4 x double], ptr %A, i64 0, i64 333  %6 = load double, ptr %arrayidx16.i, align 834  %arrayidx18.i = getelementptr inbounds [4 x double], ptr %B, i64 3, i64 035  %7 = load double, ptr %arrayidx18.i, align 836  %mul19.i = fmul double %6, %737  %add20.i = fadd double %add14.i, %mul19.i38  %arrayidx25.i = getelementptr inbounds [4 x double], ptr %B, i64 0, i64 139  %8 = load double, ptr %arrayidx25.i, align 840  %mul26.i = fmul double %0, %841  %arrayidx30.i = getelementptr inbounds [4 x double], ptr %B, i64 1, i64 142  %9 = load double, ptr %arrayidx30.i, align 843  %mul31.i = fmul double %2, %944  %add32.i = fadd double %mul26.i, %mul31.i45  %arrayidx36.i = getelementptr inbounds [4 x double], ptr %B, i64 2, i64 146  %10 = load double, ptr %arrayidx36.i, align 847  %mul37.i = fmul double %4, %1048  %add38.i = fadd double %add32.i, %mul37.i49  %arrayidx42.i = getelementptr inbounds [4 x double], ptr %B, i64 3, i64 150  %11 = load double, ptr %arrayidx42.i, align 851  %mul43.i = fmul double %6, %1152  %add44.i = fadd double %add38.i, %mul43.i53  %arrayidx49.i = getelementptr inbounds [4 x double], ptr %B, i64 0, i64 254  %12 = load double, ptr %arrayidx49.i, align 855  %mul50.i = fmul double %0, %1256  %arrayidx54.i = getelementptr inbounds [4 x double], ptr %B, i64 1, i64 257  %13 = load double, ptr %arrayidx54.i, align 858  %mul55.i = fmul double %2, %1359  %add56.i = fadd double %mul50.i, %mul55.i60  %arrayidx60.i = getelementptr inbounds [4 x double], ptr %B, i64 2, i64 261  %14 = load double, ptr %arrayidx60.i, align 862  %mul61.i = fmul double %4, %1463  %add62.i = fadd double %add56.i, %mul61.i64  %arrayidx66.i = getelementptr inbounds [4 x double], ptr %B, i64 3, i64 265  %15 = load double, ptr %arrayidx66.i, align 866  %mul67.i = fmul double %6, %1567  %add68.i = fadd double %add62.i, %mul67.i68  %arrayidx73.i = getelementptr inbounds [4 x double], ptr %B, i64 0, i64 369  %16 = load double, ptr %arrayidx73.i, align 870  %mul74.i = fmul double %0, %1671  %arrayidx78.i = getelementptr inbounds [4 x double], ptr %B, i64 1, i64 372  %17 = load double, ptr %arrayidx78.i, align 873  %mul79.i = fmul double %2, %1774  %add80.i = fadd double %mul74.i, %mul79.i75  %arrayidx84.i = getelementptr inbounds [4 x double], ptr %B, i64 2, i64 376  %18 = load double, ptr %arrayidx84.i, align 877  %mul85.i = fmul double %4, %1878  %add86.i = fadd double %add80.i, %mul85.i79  %arrayidx90.i = getelementptr inbounds [4 x double], ptr %B, i64 3, i64 380  %19 = load double, ptr %arrayidx90.i, align 881  %mul91.i = fmul double %6, %1982  %add92.i = fadd double %add86.i, %mul91.i83  %arrayidx95.i = getelementptr inbounds [4 x double], ptr %A, i64 1, i64 084  %20 = load double, ptr %arrayidx95.i, align 885  %mul98.i = fmul double %1, %2086  %arrayidx100.i = getelementptr inbounds [4 x double], ptr %A, i64 1, i64 187  %21 = load double, ptr %arrayidx100.i, align 888  %mul103.i = fmul double %3, %2189  %add104.i = fadd double %mul98.i, %mul103.i90  %arrayidx106.i = getelementptr inbounds [4 x double], ptr %A, i64 1, i64 291  %22 = load double, ptr %arrayidx106.i, align 892  %mul109.i = fmul double %5, %2293  %add110.i = fadd double %add104.i, %mul109.i94  %arrayidx112.i = getelementptr inbounds [4 x double], ptr %A, i64 1, i64 395  %23 = load double, ptr %arrayidx112.i, align 896  %mul115.i = fmul double %7, %2397  %add116.i = fadd double %add110.i, %mul115.i98  %mul122.i = fmul double %8, %2099  %mul127.i = fmul double %9, %21100  %add128.i = fadd double %mul122.i, %mul127.i101  %mul133.i = fmul double %10, %22102  %add134.i = fadd double %add128.i, %mul133.i103  %mul139.i = fmul double %11, %23104  %add140.i = fadd double %add134.i, %mul139.i105  %mul146.i = fmul double %12, %20106  %mul151.i = fmul double %13, %21107  %add152.i = fadd double %mul146.i, %mul151.i108  %mul157.i = fmul double %14, %22109  %add158.i = fadd double %add152.i, %mul157.i110  %mul163.i = fmul double %15, %23111  %add164.i = fadd double %add158.i, %mul163.i112  %mul170.i = fmul double %16, %20113  %mul175.i = fmul double %17, %21114  %add176.i = fadd double %mul170.i, %mul175.i115  %mul181.i = fmul double %18, %22116  %add182.i = fadd double %add176.i, %mul181.i117  %mul187.i = fmul double %19, %23118  %add188.i = fadd double %add182.i, %mul187.i119  %arrayidx191.i = getelementptr inbounds [4 x double], ptr %A, i64 2, i64 0120  %24 = load double, ptr %arrayidx191.i, align 8121  %mul194.i = fmul double %1, %24122  %arrayidx196.i = getelementptr inbounds [4 x double], ptr %A, i64 2, i64 1123  %25 = load double, ptr %arrayidx196.i, align 8124  %mul199.i = fmul double %3, %25125  %add200.i = fadd double %mul194.i, %mul199.i126  %arrayidx202.i = getelementptr inbounds [4 x double], ptr %A, i64 2, i64 2127  %26 = load double, ptr %arrayidx202.i, align 8128  %mul205.i = fmul double %5, %26129  %add206.i = fadd double %add200.i, %mul205.i130  %arrayidx208.i = getelementptr inbounds [4 x double], ptr %A, i64 2, i64 3131  %27 = load double, ptr %arrayidx208.i, align 8132  %mul211.i = fmul double %7, %27133  %add212.i = fadd double %add206.i, %mul211.i134  %mul218.i = fmul double %8, %24135  %mul223.i = fmul double %9, %25136  %add224.i = fadd double %mul218.i, %mul223.i137  %mul229.i = fmul double %10, %26138  %add230.i = fadd double %add224.i, %mul229.i139  %mul235.i = fmul double %11, %27140  %add236.i = fadd double %add230.i, %mul235.i141  %mul242.i = fmul double %12, %24142  %mul247.i = fmul double %13, %25143  %add248.i = fadd double %mul242.i, %mul247.i144  %mul253.i = fmul double %14, %26145  %add254.i = fadd double %add248.i, %mul253.i146  %mul259.i = fmul double %15, %27147  %add260.i = fadd double %add254.i, %mul259.i148  %mul266.i = fmul double %16, %24149  %mul271.i = fmul double %17, %25150  %add272.i = fadd double %mul266.i, %mul271.i151  %mul277.i = fmul double %18, %26152  %add278.i = fadd double %add272.i, %mul277.i153  %mul283.i = fmul double %19, %27154  %add284.i = fadd double %add278.i, %mul283.i155  %arrayidx287.i = getelementptr inbounds [4 x double], ptr %A, i64 3, i64 0156  %28 = load double, ptr %arrayidx287.i, align 8157  %mul290.i = fmul double %1, %28158  %arrayidx292.i = getelementptr inbounds [4 x double], ptr %A, i64 3, i64 1159  %29 = load double, ptr %arrayidx292.i, align 8160  %mul295.i = fmul double %3, %29161  %add296.i = fadd double %mul290.i, %mul295.i162  %arrayidx298.i = getelementptr inbounds [4 x double], ptr %A, i64 3, i64 2163  %30 = load double, ptr %arrayidx298.i, align 8164  %mul301.i = fmul double %5, %30165  %add302.i = fadd double %add296.i, %mul301.i166  %arrayidx304.i = getelementptr inbounds [4 x double], ptr %A, i64 3, i64 3167  %31 = load double, ptr %arrayidx304.i, align 8168  %mul307.i = fmul double %7, %31169  %add308.i = fadd double %add302.i, %mul307.i170  %mul314.i = fmul double %8, %28171  %mul319.i = fmul double %9, %29172  %add320.i = fadd double %mul314.i, %mul319.i173  %mul325.i = fmul double %10, %30174  %add326.i = fadd double %add320.i, %mul325.i175  %mul331.i = fmul double %11, %31176  %add332.i = fadd double %add326.i, %mul331.i177  %mul338.i = fmul double %12, %28178  %mul343.i = fmul double %13, %29179  %add344.i = fadd double %mul338.i, %mul343.i180  %mul349.i = fmul double %14, %30181  %add350.i = fadd double %add344.i, %mul349.i182  %mul355.i = fmul double %15, %31183  %add356.i = fadd double %add350.i, %mul355.i184  %mul362.i = fmul double %16, %28185  %mul367.i = fmul double %17, %29186  %add368.i = fadd double %mul362.i, %mul367.i187  %mul373.i = fmul double %18, %30188  %add374.i = fadd double %add368.i, %mul373.i189  %mul379.i = fmul double %19, %31190  %add380.i = fadd double %add374.i, %mul379.i191  store double %add20.i, ptr %Out, align 8192  %Res.i.sroa.1.8.idx2 = getelementptr inbounds double, ptr %Out, i64 1193  store double %add44.i, ptr %Res.i.sroa.1.8.idx2, align 8194  %Res.i.sroa.2.16.idx4 = getelementptr inbounds double, ptr %Out, i64 2195  store double %add68.i, ptr %Res.i.sroa.2.16.idx4, align 8196  %Res.i.sroa.3.24.idx6 = getelementptr inbounds double, ptr %Out, i64 3197  store double %add92.i, ptr %Res.i.sroa.3.24.idx6, align 8198  %Res.i.sroa.4.32.idx8 = getelementptr inbounds double, ptr %Out, i64 4199  store double %add116.i, ptr %Res.i.sroa.4.32.idx8, align 8200  %Res.i.sroa.5.40.idx10 = getelementptr inbounds double, ptr %Out, i64 5201  store double %add140.i, ptr %Res.i.sroa.5.40.idx10, align 8202  %Res.i.sroa.6.48.idx12 = getelementptr inbounds double, ptr %Out, i64 6203  store double %add164.i, ptr %Res.i.sroa.6.48.idx12, align 8204  %Res.i.sroa.7.56.idx14 = getelementptr inbounds double, ptr %Out, i64 7205  store double %add188.i, ptr %Res.i.sroa.7.56.idx14, align 8206  %Res.i.sroa.8.64.idx16 = getelementptr inbounds double, ptr %Out, i64 8207  store double %add212.i, ptr %Res.i.sroa.8.64.idx16, align 8208  %Res.i.sroa.9.72.idx18 = getelementptr inbounds double, ptr %Out, i64 9209  store double %add236.i, ptr %Res.i.sroa.9.72.idx18, align 8210  %Res.i.sroa.10.80.idx20 = getelementptr inbounds double, ptr %Out, i64 10211  store double %add260.i, ptr %Res.i.sroa.10.80.idx20, align 8212  %Res.i.sroa.11.88.idx22 = getelementptr inbounds double, ptr %Out, i64 11213  store double %add284.i, ptr %Res.i.sroa.11.88.idx22, align 8214  %Res.i.sroa.12.96.idx24 = getelementptr inbounds double, ptr %Out, i64 12215  store double %add308.i, ptr %Res.i.sroa.12.96.idx24, align 8216  %Res.i.sroa.13.104.idx26 = getelementptr inbounds double, ptr %Out, i64 13217  store double %add332.i, ptr %Res.i.sroa.13.104.idx26, align 8218  %Res.i.sroa.14.112.idx28 = getelementptr inbounds double, ptr %Out, i64 14219  store double %add356.i, ptr %Res.i.sroa.14.112.idx28, align 8220  %Res.i.sroa.15.120.idx30 = getelementptr inbounds double, ptr %Out, i64 15221  store double %add380.i, ptr %Res.i.sroa.15.120.idx30, align 8222  ret void223}224 225attributes #0 = { noinline nounwind ssp uwtable "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "use-soft-float"="false" }226