[llvm-bugs] [Bug 41419] New: [InstCombine] Assertion !isa<UndefValue>(Shuf.getOperand(1))

via llvm-bugs llvm-bugs at lists.llvm.org
Sun Apr 7 12:32:07 PDT 2019


https://bugs.llvm.org/show_bug.cgi?id=41419

            Bug ID: 41419
           Summary: [InstCombine]  Assertion
                    !isa<UndefValue>(Shuf.getOperand(1))
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: Windows NT
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Common Code Generator Code
          Assignee: unassignedbugs at nondot.org
          Reporter: llvm-dev at redking.me.uk
                CC: llvm-bugs at lists.llvm.org, spatel+llvm at rotateright.com

Reduced from https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14083:

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

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20190407/c5325c8c/attachment.html>


More information about the llvm-bugs mailing list