search for: heuristc

Displaying 10 results from an estimated 10 matches for "heuristc".

Did you mean: heuristic
2010 Nov 24
7
[LLVMdev] LLVM Inliner
...not consider the possible cleanup) 3) recursive inlining is not supported 4) function with indirect branch is not inlined. What source construct does indirect branch instr correspond to ? variable jump? 5) fudge factor prefers functions with vector instructions -- why is that? 6) There is one heuristc used in inline-cost computation seems wrong: // Calls usually take a long time, so they make the inlining gain smaller. InlineCost += CalleeFI->Metrics.NumCalls * InlineConstants::CallPenalty; Does it try to block inlining of callees with lots of calls? Note inlining such a function only...
2010 Nov 24
0
[LLVMdev] LLVM Inliner
...like interpreter loops, which you don't usually want to inline. > 5) fudge factor prefers functions with vector instructions -- why is that? I'm guessing that vectorized instructions are an indicator that the function is a hotspot, and should therefore be inlined. > 6) There is one heuristc used in inline-cost computation seems wrong: > >   // Calls usually take a long time, so they make the inlining gain smaller. >   InlineCost += CalleeFI->Metrics.NumCalls * InlineConstants::CallPenalty; > Does it try to block inlining of callees with lots of calls? Note inlining >...
2010 Nov 24
0
[LLVMdev] LLVM Inliner
...t; > 4) function with indirect branch is not inlined. What source construct > does indirect branch instr correspond to ? variable jump? Right. It's for "goto *ptr;". Nick > 5) fudge factor prefers functions with vector instructions -- why is that? > > 6) There is one heuristc used in inline-cost computation seems wrong: > > > // Calls usually take a long time, so they make the inlining gain > smaller. > InlineCost += CalleeFI->Metrics.NumCalls * InlineConstants::CallPenalty; > > Does it try to block inlining of callees with lots of calls? N...
2010 Nov 28
0
[LLVMdev] LLVM Inliner
...ut it. I agree that it should be revisited. > 4) function with indirect branch is not inlined. What source construct does indirect branch instr correspond to ? variable jump? See: http://blog.llvm.org/2010/01/address-of-label-and-indirect-branches.html for more details. > 6) There is one heuristc used in inline-cost computation seems wrong: > > // Calls usually take a long time, so they make the inlining gain smaller. > InlineCost += CalleeFI->Metrics.NumCalls * InlineConstants::CallPenalty; > > Does it try to block inlining of callees with lots of calls? Note inlini...
2019 Sep 09
2
Fwd: MachineScheduler not scheduling for latency
Hi, I'm trying to understand why MachineScheduler does a poor job in straight line code in cases like the one in the attached debug dump. This is on AMDGPU, an in-order target, and the problem is that the IMAGE_SAMPLE instructions have very high (80 cycle) latency, but in the resulting schedule they are often placed right next to their uses like this: 1784B %140:vgpr_32 =
2013 Sep 24
0
[LLVMdev] MI Scheduler Update (was Experimental Evaluation of the Schedulers in LLVM 3.3)
...tion order unless performance is at stake, the bar for adding heuristics is high. Complicating the heuristics now also means making them harder to understand and improve in the future. I would like to see a general solution to scheduling for register pressure. I had plenty of ideas for more ad-hoc heuristcs within the bounds of list scheduling, but given that we haven't dominstrated the value of simple heuristics, I don't want to pursue anything more complicated. I think better solutions will have to transcend list scheduling. I do like to the idea of constraining the DAG prior to scheduling...
2019 Sep 10
2
MachineScheduler not scheduling for latency
...pectation that the GenericScheduler heuristics are anywhere near as good as they can be over the universe of workloads, but changing those heuristiscs means checking in with current backend maintainers to be sure you're not regressing their benchmarks in the process. I haven't touched these heuristcs in 6 years, but several others have had a hand in it recently. > > -Andy >
2010 Nov 24
3
[LLVMdev] LLVM Inliner
...not inlined. What source construct >> does indirect branch instr correspond to ? variable jump? >> > > Right. It's for "goto *ptr;". > > Nick > > 5) fudge factor prefers functions with vector instructions -- why is that? >> >> 6) There is one heuristc used in inline-cost computation seems wrong: >> >> >> // Calls usually take a long time, so they make the inlining gain >> smaller. >> InlineCost += CalleeFI->Metrics.NumCalls * InlineConstants::CallPenalty; >> >> Does it try to block inlining of cal...
2010 Nov 29
3
[LLVMdev] LLVM Inliner
...gt; > > 4) function with indirect branch is not inlined. What source construct > does indirect branch instr correspond to ? variable jump? > > See: > http://blog.llvm.org/2010/01/address-of-label-and-indirect-branches.html > > for more details. > > > 6) There is one heuristc used in inline-cost computation seems wrong: > > > > // Calls usually take a long time, so they make the inlining gain > smaller. > > InlineCost += CalleeFI->Metrics.NumCalls * > InlineConstants::CallPenalty; > > > > Does it try to block inlining of callee...
2013 Sep 17
11
[LLVMdev] Experimental Evaluation of the Schedulers in LLVM 3.3
Hi Andy, We have done some experimental evaluation of the different schedulers in LLVM 3.3 (source, BURR, ILP, fast, MI). The evaluation was done on x86-64 using SPEC CPU2006. We have measured both the amount of spill code as well as the execution time as detailed below. Here are our main findings: 1. The SD schedulers significantly impact the spill counts and the execution times for many