<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 - [InstCombine] Assertion !isa<UndefValue>(Shuf.getOperand(1))"
href="https://bugs.llvm.org/show_bug.cgi?id=41419">41419</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>[InstCombine] Assertion !isa<UndefValue>(Shuf.getOperand(1))
</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>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>Common Code Generator Code
</td>
</tr>
<tr>
<th>Assignee</th>
<td>unassignedbugs@nondot.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>llvm-dev@redking.me.uk
</td>
</tr>
<tr>
<th>CC</th>
<td>llvm-bugs@lists.llvm.org, spatel+llvm@rotateright.com
</td>
</tr></table>
<p>
<div>
<pre>Reduced from <a href="https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14083">https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14083</a>:
opt -instcombine
opt:
/home/simon/LLVM/llvm/lib/Transforms/InstCombine/InstCombineVectorOps.cpp:1357:
llvm::Instruction* foldSelectShuffle(llvm::ShuffleVectorInst&,
llvm::InstCombiner::BuilderTy&, const llvm::DataLayout&): Assertion
`!isa<UndefValue>(Shuf.getOperand(1)) && "Not expecting undef shuffle operand
with select mask"' failed.
@spatel This might be related to D60048?
; ModuleID = 'bugpoint-reduced-simplified.bc'
source_filename = "llvm/test/Transforms/InstCombine/shuffle_select.ll"
target triple = "x86_64-unknown-linux-gnu"
declare <4 x i32> @add(<4 x i32>)
declare <4 x i32> @add_nuw_nsw(<4 x i32>)
declare <4 x i32> @add_undef_mask_elt(<4 x i32>)
declare <4 x i32> @add_nuw_nsw_undef_mask_elt(<4 x i32>)
declare <4 x i32> @sub(<4 x i32>)
declare <4 x i32> @mul(<4 x i32>)
declare <4 x i32> @shl(<4 x i32>)
declare <4 x i32> @shl_nsw(<4 x i32>)
declare <4 x i32> @shl_undef_mask_elt(<4 x i32>)
declare <4 x i32> @shl_nuw_undef_mask_elt(<4 x i32>)
define <4 x i32> @lshr_constant_op0(<4 x i32> %v) {
bb:
%s = shufflevector <4 x i32> %v, <4 x i32> undef, <4 x i32> <i32 4, i32 5,
i32 2, i32 7>
ret <4 x i32> %s
}
declare <4 x i32> @lshr_exact_constant_op0(<4 x i32>)
declare <4 x i32> @lshr_undef_mask_elt(<4 x i32>)
declare <4 x i32> @lshr_exact_undef_mask_elt(<4 x i32>)
declare <4 x i32> @lshr_constant_op1(<4 x i32>)
declare <3 x i32> @ashr(<3 x i32>)
declare <3 x i42> @and(<3 x i42>)
declare void @use_v4i32(<4 x i32>)
declare <4 x i32> @or(<4 x i32>)
declare <4 x i32> @xor(<4 x i32>)
declare <4 x i32> @udiv(<4 x i32>)
declare <4 x i32> @udiv_exact(<4 x i32>)
declare <4 x i32> @udiv_undef_mask_elt(<4 x i32>)
declare <4 x i32> @udiv_exact_undef_mask_elt(<4 x i32>)
declare <4 x i32> @sdiv(<4 x i32>)
declare <4 x i32> @sdiv_exact(<4 x i32>)
declare <4 x i32> @sdiv_undef_mask_elt(<4 x i32>)
declare <4 x i32> @sdiv_exact_undef_mask_elt(<4 x i32>)
declare <4 x i32> @urem(<4 x i32>)
declare <4 x i32> @urem_undef_mask_elt(<4 x i32>)
declare <4 x i32> @srem(<4 x i32>)
declare <4 x float> @fadd(<4 x float>)
declare <4 x double> @fsub(<4 x double>)
declare <4 x float> @fmul(<4 x float>)
declare <4 x double> @fdiv_constant_op0(<4 x double>)
declare <4 x double> @fdiv_constant_op1(<4 x double>)
declare <4 x double> @frem(<4 x double>)
declare <4 x i32> @add_add(<4 x i32>)
declare <4 x i32> @add_add_nsw(<4 x i32>)
declare <4 x i32> @add_add_undef_mask_elt(<4 x i32>)
declare <4 x i32> @add_add_nsw_undef_mask_elt(<4 x i32>)
declare <4 x i32> @sub_sub(<4 x i32>)
declare <4 x i32> @sub_sub_nuw(<4 x i32>)
declare <4 x i32> @sub_sub_undef_mask_elt(<4 x i32>)
declare <4 x i32> @sub_sub_nuw_undef_mask_elt(<4 x i32>)
declare <4 x i32> @mul_mul(<4 x i32>)
declare <4 x i32> @shl_shl(<4 x i32>)
declare <4 x i32> @shl_shl_nuw(<4 x i32>)
declare <4 x i32> @shl_shl_undef_mask_elt(<4 x i32>)
declare <4 x i32> @shl_shl_nuw_undef_mask_elt(<4 x i32>)
declare <4 x i32> @lshr_lshr(<4 x i32>)
declare <3 x i32> @ashr_ashr(<3 x i32>)
declare <3 x i42> @and_and(<3 x i42>)
declare <4 x i32> @or_or(<4 x i32>)
declare <4 x i32> @xor_xor(<4 x i32>)
declare <4 x i32> @udiv_udiv(<4 x i32>)
declare <4 x i32> @sdiv_sdiv(<4 x i32>)
declare <4 x i32> @sdiv_sdiv_exact(<4 x i32>)
declare <4 x i32> @sdiv_sdiv_undef_mask_elt(<4 x i32>)
declare <4 x i32> @sdiv_sdiv_exact_undef_mask_elt(<4 x i32>)
declare <4 x i32> @urem_urem(<4 x i32>)
declare <4 x i32> @urem_urem_undef_mask_elt(<4 x i32>)
declare <4 x i32> @srem_srem(<4 x i32>)
declare <4 x i32> @srem_srem_undef_mask_elt(<4 x i32>)
declare <4 x float> @fadd_fadd(<4 x float>)
declare <4 x double> @fsub_fsub(<4 x double>)
declare <4 x float> @fmul_fmul(<4 x float>)
declare <4 x double> @fdiv_fdiv(<4 x double>)
declare <4 x double> @frem_frem(<4 x double>)
declare <4 x i32> @add_2_vars(<4 x i32>, <4 x i32>)
declare <4 x i32> @sub_2_vars(<4 x i32>, <4 x i32>)
declare <4 x i32> @sub_2_vars_nsw(<4 x i32>, <4 x i32>)
declare <4 x i32> @sub_2_vars_undef_mask_elt(<4 x i32>, <4 x i32>)
declare <4 x i32> @sub_2_vars_nsw_undef_mask_elt(<4 x i32>, <4 x i32>)
declare <4 x i32> @mul_2_vars(<4 x i32>, <4 x i32>)
declare <4 x i32> @mul_2_vars_nuw(<4 x i32>, <4 x i32>)
declare <4 x i32> @mul_2_vars_undef_mask_elt(<4 x i32>, <4 x i32>)
declare <4 x i32> @mul_2_vars_nuw_undef_mask_elt(<4 x i32>, <4 x i32>)
declare <4 x i32> @shl_2_vars(<4 x i32>, <4 x i32>)
declare <4 x i32> @shl_2_vars_nsw(<4 x i32>, <4 x i32>)
declare <4 x i32> @shl_2_vars_undef_mask_elt(<4 x i32>, <4 x i32>)
declare <4 x i32> @shl_2_vars_nsw_undef_mask_elt(<4 x i32>, <4 x i32>)
declare <4 x i32> @lshr_2_vars(<4 x i32>, <4 x i32>)
declare <4 x i32> @lshr_2_vars_exact(<4 x i32>, <4 x i32>)
declare <4 x i32> @lshr_2_vars_undef_mask_elt(<4 x i32>, <4 x i32>)
declare <4 x i32> @lshr_2_vars_exact_undef_mask_elt(<4 x i32>, <4 x i32>)
declare <3 x i32> @ashr_2_vars(<3 x i32>, <3 x i32>)
declare <3 x i42> @and_2_vars(<3 x i42>, <3 x i42>)
declare <4 x i32> @or_2_vars(<4 x i32>, <4 x i32>)
declare <4 x i32> @xor_2_vars(<4 x i32>, <4 x i32>)
declare <4 x i32> @udiv_2_vars(<4 x i32>, <4 x i32>)
declare <4 x i32> @udiv_2_vars_exact(<4 x i32>, <4 x i32>)
declare <4 x i32> @udiv_2_vars_undef_mask_elt(<4 x i32>, <4 x i32>)
declare <4 x i32> @udiv_2_vars_exact_undef_mask_elt(<4 x i32>, <4 x i32>)
declare <4 x i32> @sdiv_2_vars(<4 x i32>, <4 x i32>)
declare <4 x i32> @sdiv_2_vars_exact(<4 x i32>, <4 x i32>)
declare <4 x i32> @sdiv_2_vars_undef_mask_elt(<4 x i32>, <4 x i32>)
declare <4 x i32> @sdiv_2_vars_exact_undef_mask_elt(<4 x i32>, <4 x i32>)
declare <4 x i32> @urem_2_vars(<4 x i32>, <4 x i32>)
declare <4 x i32> @srem_2_vars(<4 x i32>, <4 x i32>)
declare <4 x float> @fadd_2_vars(<4 x float>, <4 x float>)
declare <4 x double> @fsub_2_vars(<4 x double>, <4 x double>)
declare <4 x float> @fmul_2_vars(<4 x float>, <4 x float>)
declare <4 x double> @frem_2_vars(<4 x double>, <4 x double>)
declare <4 x double> @fdiv_2_vars(<4 x double>, <4 x double>)
declare <4 x i32> @mul_shl(<4 x i32>)
declare <4 x i32> @shl_mul(<4 x i32>)
declare <4 x i32> @mul_is_nop_shl(<4 x i32>)
declare <4 x i32> @shl_mul_not_constant_shift_amount(<4 x i32>)
declare <4 x i32> @mul_shl_2_vars(<4 x i32>, <4 x i32>)
declare <4 x i32> @shl_mul_2_vars(<4 x i32>, <4 x i32>)
declare <4 x i32> @add_or(<4 x i32>)
declare <4 x i8> @or_add(<4 x i8>)
declare <4 x i8> @or_add_not_enough_masking(<4 x i8>)
declare <4 x i32> @add_or_2_vars(<4 x i32>, <4 x i32>)
declare <4 x i8> @or_add_2_vars(<4 x i8>, <4 x i8>)</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>