<div dir="ltr">Hi,<div>I'm new to LLVM and I'm doing research on factors of compilation time, especially instruction selection and scheduling. One of the academic papers I read, <a href="https://llvm.org/svn/llvm-project/www-pubs/trunk/2008-CGO-DagISel.pdf">https://llvm.org/svn/llvm-project/www-pubs/trunk/2008-CGO-DagISel.pdf</a> (<span style="font-size:13px;font-family:Arial,sans-serif;line-height:16.12px">Koes, David Ryan, and Seth Copen Goldstein. "Near-optimal instruction selection on dags."), which is also said to be the algorithm LLVM currently used(Correct me if I'm wrong), introduce an selection algorithm for DAG instead of tree matching. </span></div><div><br></div><div>My question is, according to the paper, each tile in DAG has a cost value which is used in dynamic programming process and CSE decisions. But in TableGen files, I didn't find any field recording cost values or similar properties. I know that the MatcherTables in generated TableGen include files act like a byte code interpreter which perform bottom-up selection, resembles to bottom-up dynamic programming. But if the generated MatcherTables are really used for performing bottom-up dynamic programming selection, it still needs a cost model to help it making decisions. So where is it?</div><div><br></div><div>I've read some great articles about part of the platform-independent instruction selection components. But I'm curious about instruction selection algorithm currently used.</div><div><br></div><div>Cheers,</div><div><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Bekket McClane<div>Department of Computer Science,</div><div>National Tsing Hua University</div></div></div>
</div></div>