<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
Hi Jonas,
<div class=""><br class="">
</div>
<div class="">I tried to trace the history of the code. I found it was introduced in r172998(<a href="http://www.llvm.org/viewvc/llvm-project?view=revision&revision=172998" class="">http://www.llvm.org/viewvc/llvm-project?view=revision&revision=172998</a>)
 in 2013. I don’t see any tests in the commit.</div>
<div class="">I think this code might be outdated. Maybe it was related to vector code.</div>
<div class="">There are tests for vector code. See test/Analysis/CostModel/SystemZ/cmp-ext.ll.</div>
<div class="">I don’t know if there are any tests for scalar code.</div>
<div class="">I checked the inline cost calculation. In case of the ARM targets the cost of the cast was reported as free but it was lowered into real instruction. Of course, they are very light and have no impact at O2/O3 because of very high inlining thresholds.
 However they will have impact at Os/Oz where thresholds are much lower.</div>
<div class=""><br class="">
</div>
<div class="">Thanks,</div>
<div class="">Evgeny Astigeevich </div>
<div class=""><br class="">
<div><br class="">
<blockquote type="cite" class="">
<div class="">On 26 Oct 2018, at 14:20, Jonas Paulsson <<a href="mailto:paulsson@linux.vnet.ibm.com" class="">paulsson@linux.vnet.ibm.com</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div class="">Hi,<br class="">
<br class="">
I wonder why the extension of i1 is per default considered free in getUserCost(). The comment says that these are "mostly optimized away in codegen", but I wonder how that can be: If the i1 is extended then a register must be loaded with either a 0 or (-)1
 after the comparison, or?<br class="">
<br class="">
I have made some test functions that seem to result in compare + conditional move on SystemZ (or a setcc on Intel). See
<a href="https://reviews.llvm.org/D53373" class="">https://reviews.llvm.org/D53373</a>. On both of these targets this is clearly not free.<br class="">
<br class="">
Are those simple tests I made special in any way so that they might call for some general rule in the generic implementation?<br class="">
<br class="">
Any example of when this extension is actually free?<br class="">
<br class="">
/Jonas<br class="">
<br class="">
<br class="">
</div>
</div>
</blockquote>
</div>
<br class="">
</div>
</body>
</html>