<html>
<head>
<base href="https://bugs.llvm.org/">
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW - LLVM IR - Instcombine: creates unneeded extensions"
href="https://bugs.llvm.org/show_bug.cgi?id=50278">50278</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>LLVM IR - Instcombine: creates unneeded extensions
</td>
</tr>
<tr>
<th>Product</th>
<td>new-bugs
</td>
</tr>
<tr>
<th>Version</th>
<td>trunk
</td>
</tr>
<tr>
<th>Hardware</th>
<td>PC
</td>
</tr>
<tr>
<th>OS</th>
<td>Windows NT
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>enhancement
</td>
</tr>
<tr>
<th>Priority</th>
<td>P
</td>
</tr>
<tr>
<th>Component</th>
<td>new bugs
</td>
</tr>
<tr>
<th>Assignee</th>
<td>unassignedbugs@nondot.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>alon.kom@intel.com
</td>
</tr>
<tr>
<th>CC</th>
<td>htmldeveloper@gmail.com, llvm-bugs@lists.llvm.org
</td>
</tr></table>
<p>
<div>
<pre>Created <span class=""><a href="attachment.cgi?id=24844" name="attach_24844" title="The reproducing test and its workaround">attachment 24844</a> <a href="attachment.cgi?id=24844&action=edit" title="The reproducing test and its workaround">[details]</a></span>
The reproducing test and its workaround
In the attached test (test.c) in the test() function Instcombine doesn't fold
the unneeded i32 extension, instead of using the smaller types of i8 and i16.
In the workaround version test_workaround() function where the 8 constant is
replaced with an argument, InstCombine uses the i8, i16 types as expected.
Both functions are compiled with clang -O2 -S -march=core-avx2.
As can be seen in the assembly files after compiling, the test is compiled with
11 instructions instead of 8 with the workaround.</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are on the CC list for the bug.</li>
</ul>
</body>
</html>