<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/152150>152150</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [DAG][X86] Backend building SelectionDAG failed when hitting new datatype (`v7f16`)
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          lialan
      </td>
    </tr>
</table>

<pre>
    ## 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.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzcV1tv2zja_jX0DRGDInXyhS-UeNwW-KYImn7F3AkUSVvcUKRAUonz7xcvJTd2JtPt7BZ7sUFsi6dHz3siH_IQ9NEqtUXFLSp2Kz7F3vmt0dxwu-qcfNkiyhBl-N67zqgBkeajjlHbI469DpiHoHzUziLWINKgkiz_pIm99rIduY8viO6NeRpuRu_-oURcmvCjO0T3d06qD8oiun9QRgmA2zUf3jRvJ22k8msxjog1VUURa_CT0xIfVbxz48tXd899DN-UiM4jWl8uxoiWiN5h4WyI-GH3f06cux5237iZ1MUjRrSB5mSTcyTWNkL7929fXzGuZoYowX7WuBFeyA1id3fcGG2Pd84-zWOfEGl2iP2G6AaoN2fPYVSSz9PwRR0DRmyH2A5_noZky8yxxIhSaGPhJhuxdCpYRKuIBx5Fj5-Sxbjzij9K92wRzRCliFb4wLVRco1Ic28UDwp7NTofsQ5hUgFHh_sYxwD86B7R_VHHfurWwkFstFfqxvnj8gg_8zJuwSXCTFLh2CssPA897rh4jJ4LBa97iFw8YjkN45wXZI3T35fJWsidkQcwrtpPNoUI30PH79zyo_LA3Fk8ODkZcHElnH2isuVCTMNkeFQtbfM2o3X6RD2o0LKWtXUr48uo2kNWfv9IHUbwUksQrYBatv4Tiz_qEu-aDzeI_Qa58smG6KeZ1_ckWkgdzoQRrVBOfg2zFmBaKlsr-uf2AF_0VJ8yWqZPfmInBkvgnaTBiDKCyYkQQiqmyqIus7re1DjVVEq18BLmh3uvbUzB-AqhQbR-neT5c-tC9IoPSymkPN9gRPe9GyDg1skl-hTR_c8X9MM0Qp4huv9_q0_QoY-Wm7DWViDW1CxHrMnYYkz2xpiyoOQ9Y75Mdsb5yK00ygdE61_N90x03mUyUsB3vRClb4huSprhK0qI1stmEfRR24Nr47JFwE6VHv8L_s1piVjDzrTZJW1C84IxgpPvFrhTXbZlfmO0nU43RzvNA2Id3LpE9Jac0hLYt2bA_BpwozoqcNuOsfeKy_ZRG9PqYTRqUDbyVC5rsHaMBtH95bR1ogvZUJULePEz4DYqb7n5IWxVpwgusOV7sJdrfohVby6xqrcOpZXCnuugEkhIwUB0v06tlyDVGADVhRSsNDPB0gqx5mx4fY1K6_pwwLyD_TrhRDlHK3XNrDIwc1m--dPyrMOtNa1xXLbSDVzPYdA22QjdQzgKPmNlWQVkIMRQkuQajXVFVv29nElL5pwBwKsiP2xESUr-Vyf3a-1f64G0SV0MpmM8HcfvjH0_1d_pfPd4f523HPSvHfNhv7zpL0_8K8B0zv-CUn-jjUBX_YQ8IlD_i-fpv_b8_5DPLyE-Pezmh89Oqq8vo_rPQ4JI828q1iJL-xF9o5IRaT6BrMIhch-VBFHmhJg85oeo_I8E2pnUNdVxMlDeWZFVJcPgkOdeix4c5J2chArYqmcseeQYNEmAKc4q7A6g5gasAyjSpwoER0nWM8flFvDRPQNBr8YZC5FGuGHUZlaCPEYueiXxQRt1XlncpunreIqo2CFa_8CkKSh_M6PA2QG7JkDBL81KQukGQvWKN28vlwyXewpuLDcvQYd5cO_dkBiGyR-SELpLTT0MSmoeFxELojCJXHBC7HnEIA2fuY1JLAs3vuAxCXNtL52E3ZTSuZtigkUlOao472eQd7ffpXlJYCmg6oCti9irOHk736cUttPQKQ-hmF-jTqMSUcn1Sm6Z3LANX6ltVhV5TgqyKVb9litGqg3LK8IIJWVZHHhJSF2p_MCk2GQrvaWEFqQmRZbneVGsO1qKrpQ1z6tO5LVAOVED12YNibR2_rhKLthmBc0KsjK8UyakCyKlkDlpFC4YxW7ltyn7uukYUE6MDjG8wkQdTbpZQmkUO1Tc_lGXqNjhWy4elZW4gwIB06-uavOlBT_3yuJ-uWueMxYSNh1Dr75HdLOavNn-7UKZbzOpVJKhT1v6zwAAAP__iqivrg">