<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 - llc crashes with Instructions.cpp:2056: bool isSingleSourceMaskImpl(ArrayRef<int>, int): Assertion `(UsesLHS ^ UsesRHS) && "Should have selected from exactly 1 source"' failed."
href="https://bugs.llvm.org/show_bug.cgi?id=46276">46276</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>llc crashes with Instructions.cpp:2056: bool isSingleSourceMaskImpl(ArrayRef<int>, int): Assertion `(UsesLHS ^ UsesRHS) && "Should have selected from exactly 1 source"' failed.
</td>
</tr>
<tr>
<th>Product</th>
<td>libraries
</td>
</tr>
<tr>
<th>Version</th>
<td>trunk
</td>
</tr>
<tr>
<th>Hardware</th>
<td>PC
</td>
</tr>
<tr>
<th>OS</th>
<td>Linux
</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>Common Code Generator Code
</td>
</tr>
<tr>
<th>Assignee</th>
<td>unassignedbugs@nondot.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>mikael.holmen@ericsson.com
</td>
</tr>
<tr>
<th>CC</th>
<td>llvm-bugs@lists.llvm.org
</td>
</tr></table>
<p>
<div>
<pre>Created <span class=""><a href="attachment.cgi?id=23601" name="attach_23601" title="cgp_crash.ll reproducer">attachment 23601</a> <a href="attachment.cgi?id=23601&action=edit" title="cgp_crash.ll reproducer">[details]</a></span>
cgp_crash.ll reproducer
Reproduce with:
llc -march=x86-64 -mcpu=corei7 -o /dev/null cgp_crash.ll
Result:
llc: ../lib/IR/Instructions.cpp:2056: bool
isSingleSourceMaskImpl(ArrayRef<int>, int): Assertion `(UsesLHS ^ UsesRHS) &&
"Should have selected from exactly 1 source"' failed.
With -debug-pass=Executions the last thing we see is
[2020-06-11 09:28:04.823322421] 0x5ed2ea0 Executing Pass 'CodeGen Prepare'
on Function 'autogen_SD20565'...
Starts happening with fa8bff0cd1a:
[CostModel] Unify getArithmeticInstrCost
Add the remaining arithmetic opcodes into the generic implementation
of getUserCost and then call this from getInstructionThroughput. Most
of the backends have been modified to return the base implementation
for cost kinds other RecipThroughput. The outlier here is AMDGPU
which already uses getArithmeticInstrCost for all the cost kinds.
This change means that most of the opcodes can be removed from that
backends implementation of getUserCost.
Differential Revision: <a href="https://reviews.llvm.org/D80992">https://reviews.llvm.org/D80992</a></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>