<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>