<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
Hi Eric,
<div class=""><br class="">
</div>
<div class="">Thanks for sharing your thoughts. My thoughts on getting -mtune working were along the same lines, and indeed at least conceptually shouldn’t be too hard.</div>
<div class="">Given there are valid use cases for -mtune and it doesn’t seem like it will be hard to maintain support for it, I don’t see a reason why not to support -mtune.</div>
<div class="">My gut feel is that the hardest part about this is making sure that as target features are introduced in the future, they always get marked correctly on whether they are a code generation or a tuning feature. (I tend to call these “architectural”
 vs “micro-architectural” features, but I don’t see a need to bikeshed on this naming convention here). A tiny bit of well-written documentation and careful review should hopefully avoid those kind of mistakes when new features get introduced.</div>
<div class=""><br class="">
</div>
<div class="">I also don’t have concrete plans myself to work on this soon, but I’m also happy to help review where I can if someone picks this up.</div>
<div class=""><br class="">
</div>
<div class="">Thanks,</div>
<div class=""><br class="">
</div>
<div class="">Kristof</div>
<div class=""><br class="">
<div>
<blockquote type="cite" class="">
<div class="">On 21 Oct 2017, at 00:16, Eric Christopher <<a href="mailto:echristo@gmail.com" class="">echristo@gmail.com</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div class="">
<div dir="ltr" class="">Hi All,
<div class=""><br class="">
</div>
<div class="">I've gotten a few notes over the last few months and also given some of the recent changes to various backends to "update" the default tunings for a generic processor it made me think again about adding support for tuning to a processor rather
 than generating processor specific code - hence, mtune. I hope this is rather uncontroversial, but happy to discuss at length if anyone thinks we shouldn't add this functionality to the compiler.</div>
<div class=""><br class="">
</div>
<div class="">That said, I have a bit of a strawman outline for what I think needs to happen in general, and while I don't have any concrete plans to attack this soon I thought I'd post it in case someone else was interested:</div>
<div class=""><br class="">
</div>
<div class=""><span style="color:rgb(33,33,33);font-size:13px" class="">a) split out (in targets where we care) code generation features from tuning features on a per subtarget basis into a separate set of features</span><br style="color:rgb(33,33,33);font-size:13px" class="">
<span style="color:rgb(33,33,33);font-size:13px" class="">b) add support for initializing them based on a tune parameter to the subtarget</span><br style="color:rgb(33,33,33);font-size:13px" class="">
<span style="color:rgb(33,33,33);font-size:13px" class="">c) add support to clang for generating the tune parameter on a per function basis</span><br style="color:rgb(33,33,33);font-size:13px" class="">
</div>
<div class=""><span style="color:rgb(33,33,33);font-size:13px" class="">d) Use them in TTI and various other backend hooks rather than any code gen specific ones.</span></div>
<div class=""><span style="color:rgb(33,33,33);font-size:13px" class=""><br class="">
</span></div>
<div class=""><span style="color:rgb(33,33,33);font-size:13px" class="">Simple right? :) I'm happy to elaborate here, but I believe the work is relatively straight forward if a lot of typing.</span></div>
<div class=""><span style="color:rgb(33,33,33);font-size:13px" class=""><br class="">
</span></div>
<div class=""><span style="color:rgb(33,33,33);font-size:13px" class="">Every step there is likely to be a lot more complicated, but similar to the getSubtarget<>/getSubtargetImpl changes it should be very easy to do on any particular backend and fan out support
 there. Just make sure that clang knows which targets do and don't support the flag.</span></div>
<div class=""><br class="">
</div>
<div class="">Happy to help or review work here.</div>
<div class=""><br class="">
</div>
<div class="">Thanks!</div>
<div class=""><br class="">
</div>
<div class="">-eric</div>
</div>
</div>
</div>
</blockquote>
</div>
<br class="">
</div>
</body>
</html>