Issue 152150
Summary [DAG][X86] Backend building SelectionDAG failed when hitting new datatype (`v7f16`)
Labels new issue
Assignees
Reporter 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 https://github.com/llvm/llvm-project/pull/151763 , which introduces new data types, one of them is `v7f16`.

## How to reproduce
compile the attached file.

[repro.txt](https://github.com/user-attachments/files/21602292/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.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to