Skip to content

[DAG][X86] Backend building SelectionDAG failed when hitting new datatype (v7f16) #152150

@lialan

Description

@lialan

Problem

Hitting this assertion:

third_party/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:772: void getCopyToPartsVector(SelectionDAG &, const SDLoc &, SDValue, SDValue *, unsigned int, MVT, const Value *, std::optional<CallingConv::I
D>): Assertion `NumRegs == NumParts && "Part count doesn't match vector breakdown!"' failed.
Please report issues to https://github.com/iree-org/iree/issues and include the crash backtrace.
Stack dump:
0.      Running pass 'Function Pass Manager' on module 'conv2d_accumulate_2_4_128_128_times_3_3_8_dtype_f16_f16_f16_dispatch_0'.
1.      Running pass 'X86 DAG->DAG Instruction Selection' on function '@conv2d_accumulate_2_4_128_128_times_3_3_8_dtype_f16_f16_f16_dispatch_0_conv_2d_nchw_fchw_2x8x126x126x4x3x3_f16'
 #0 0x000073e658618898 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/nod/iree2/third_party/llvm-project/llvm/lib/Support/Unix/Signals.inc:834:13
 #1 0x000073e658616520 llvm::sys::RunSignalHandlers() /home/nod/iree2/third_party/llvm-project/llvm/lib/Support/Signals.cpp:105:18
 #2 0x000073e658619621 SignalHandler(int, siginfo_t*, void*) /home/nod/iree2/third_party/llvm-project/llvm/lib/Support/Unix/Signals.inc:426:38
 #3 0x000073e650245330 (/lib/x86_64-linux-gnu/libc.so.6+0x45330)
 #4 0x000073e65029eb2c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x000073e65029eb2c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #6 0x000073e65029eb2c pthread_kill ./nptl/pthread_kill.c:89:10
 #7 0x000073e65024527e raise ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x000073e6502288ff abort ./stdlib/abort.c:81:7
 #9 0x000073e65022881b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x000073e65023b517 (/lib/x86_64-linux-gnu/libc.so.6+0x3b517)
#11 0x000073e65f9c606a getCopyToPartsVector(llvm::SelectionDAG&, llvm::SDLoc const&, llvm::SDValue, llvm::SDValue*, unsigned int, llvm::MVT, llvm::Value const*, std::optional<unsigned int>) /home/nod/iree2/third_party/llvm-project/llvm/lib/CodeGen/Selec
tionDAG/SelectionDAGBuilder.cpp:0:3
#12 0x000073e65f9c606a getCopyToParts(llvm::SelectionDAG&, llvm::SDLoc const&, llvm::SDValue, llvm::SDValue*, unsigned int, llvm::MVT, llvm::Value const*, std::optional<unsigned int>, llvm::ISD::NodeType) /home/nod/iree2/third_party/llvm-project/llvm/li
b/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:518:12

Issue started to occur after #151763 , which introduces new data types, one of them is v7f16.

How to reproduce

compile the attached file.

repro.txt

Problem Analysis

From the surface, the immediate crashing issue is that X86 wants to copy parts in v7f16 out, but the getVectorTypeBreakdown in X86 is not returning the number of parts expected.

Metadata

Metadata

Assignees

Labels

backend:X86crashPrefer [crash-on-valid] or [crash-on-invalid]

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions