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

    <tr>
        <th>Summary</th>
        <td>
            [Hexagon] Cannot select `select` for v2i32
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    ## Description

The following code crashes `hexagon` backend due to possibly missing pattern for `select` with v2i32.

The same problem occurs when using v2i32, v4i16, v4i32, v8i8, v8i16, v8i32.
The code compiles successfully when using v2i16, v2i64, v4i8.

## Minimal Reproduction

https://godbolt.org/z/nobWznhEf

### Code

```ll
define <2 x i32> @f() {
BB:
  %P = alloca <2 x i32>
  %B = call i1 @g(ptr %P)
  br i1 %B, label %BB_T, label %BR_F

BB_T:                                              ; preds = %BB
  %L = load <2 x i32>, <2 x i32>* %P
  ret <2 x i32> %L

BR_F:                                             ; preds = %BB
  ret <2 x i32> zeroinitializer
}

declare i1 @g(ptr %0)
```

### Stack Trace

```console
LLVM ERROR: Cannot select: t22: v2i32 = select t17, t20, t26
  t17: i1,ch = CopyFromReg t15, Register:i1 %0
    t16: i1 = Register %0
  t20: v2i32,ch = load<(dereferenceable load (s64) from %ir.P)> t15, FrameIndex:i32<0>, undef:i32
    t2: i32 = FrameIndex<0>
    t19: i32 = undef
  t26: v2i32 = splat_vector Constant:i32<0>
    t18: i32 = Constant<0>
In function: f
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: ./llvm-project-latest/build-debug/bin/llc -mtriple=hexagon ./crash-reports/dagisel-hexagon/4.ll
1.      Running pass 'Function Pass Manager' on module './crash-reports/dagisel-hexagon/4.ll'.
2.      Running pass 'Hexagon DAG->DAG Pattern Instruction Selection' on function '@f'
 #0 0x00007f7c1152be7a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Support/Unix/Signals.inc:565:11
 #1 0x00007f7c1152c02b PrintStackTraceSignalHandler(void*) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Support/Unix/Signals.inc:632:1
 #2 0x00007f7c1152a686 llvm::sys::RunSignalHandlers() /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Support/Signals.cpp:104:5
 #3 0x00007f7c1152c755 SignalHandler(int) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Support/Unix/Signals.inc:407:1
 #4 0x00007f7c0fce9980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #5 0x00007f7c0efe5e87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #6 0x00007f7c0efe77f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
 #7 0x00007f7c113a1414 llvm::report_fatal_error(llvm::Twine const&, bool) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Support/ErrorHandling.cpp:125:5
 #8 0x00007f7c11d3199b /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:3779:3
 #9 0x00007f7c11d2ef32 llvm::SelectionDAGISel::SelectCodeCommon(llvm::SDNode*, unsigned char const*, unsigned int) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:3681:9
#10 0x00007f7c2134f569 llvm::HexagonDAGToDAGISel::SelectCode(llvm::SDNode*) /home/henry/aflplusplus-isel/llvm-project-latest/build-debug/lib/Target/Hexagon/HexagonGenDAGISel.inc:90943:1
#11 0x00007f7c2135eba9 llvm::HexagonDAGToDAGISel::Select(llvm::SDNode*) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Target/Hexagon/HexagonISelDAGToDAG.cpp:916:1
#12 0x00007f7c11d22a39 llvm::SelectionDAGISel::DoInstructionSelection() /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1165:5
#13 0x00007f7c11d21a8a llvm::SelectionDAGISel::CodeGenAndEmitDAG() /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:936:3
#14 0x00007f7c11d2045d llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, true>, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, true>, bool&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:688:1
#15 0x00007f7c11d1fefb llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1603:11
#16 0x00007f7c11d1d4a6 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:467:3
#17 0x00007f7c2136bfbe llvm::HexagonDAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Target/Hexagon/HexagonISelDAGToDAG.h:44:23
#18 0x00007f7c14cad105 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/MachineFunctionPass.cpp:91:8
#19 0x00007f7c13e65e66 llvm::FPPassManager::runOnFunction(llvm::Function&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/IR/LegacyPassManager.cpp:1430:23
#20 0x00007f7c13e6ac92 llvm::FPPassManager::runOnModule(llvm::Module&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/IR/LegacyPassManager.cpp:1476:16
#21 0x00007f7c13e66739 (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/IR/LegacyPassManager.cpp:1545:23
#22 0x00007f7c13e662ad llvm::legacy::PassManagerImpl::run(llvm::Module&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/IR/LegacyPassManager.cpp:535:16
#23 0x00007f7c13e6af71 llvm::legacy::PassManager::run(llvm::Module&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/IR/LegacyPassManager.cpp:1672:3
#24 0x000000000041963c compileModule(char**, llvm::LLVMContext&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/tools/llc/llc.cpp:737:41
#25 0x00000000004179e2 main /home/henry/aflplusplus-isel/llvm-project-latest/llvm/tools/llc/llc.cpp:418:13
#26 0x00007f7c0efc8c87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#27 0x00000000004171ea _start (./llvm-project-latest/build-debug/bin/llc+0x4171ea)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzNWVtzozoS_jXOi8ouJO4Pfoid5Ey2MntSSfZs1b64BAibPTJygchlfv12S2AuSc4kZzOTcdkGdOn-vu5Wt4BEZU_LGXPhS85EnVbFQReqnDlnM-fU_t_tBMmVlOqhKLckVZkgacXrnajJLHB24pFvYULgkISnf4oyI1kjiFbkoOq6SOQT2RdwAlMPXGtRlSCswpm1kCLVOPGh0DtyzwqXLaaKa74X5FCpRIo9UWnaVDV52ImSNEakmTRja3LvFTRoT9qWqIjaY9sT9QpQtGWi9odCApW6SVNR13kjAfFYQzudFYHXaohGOFvzfS3KYs8luRGAN2vSqR13Wh_qmQvDL-C7VVmipF6oagtX3-BXquTf38rdef5cNopfA9xRT-DYr5S2IRN5UQoyc9eMPBK0gntOZp6TzxgYIiazcGUHrlaIwpwSMmP-Ncw5Ixw8nPLx9MGglRmUwihSUBQLsKODrowAEN8NTSrTDxPQVpInQpqr1eZu3HCzuRjSMQNcEPCez8xdQXCIrDbgjJoB5CvTKhXPJqwAx6Th1NJo51ZCT80I0kZoEf070f4F2OcKv4lKQTzpgssCzlvd4dkQRCZSySvx3B_O0R_HIHk5pm41LFlyV_H05dBKVVkr2fZdXf3xlZzf3Px-g8zXvCyVJu0ihgbNGB7MijQMbRfRNESDa-bYQ9CRxg6YUFBoT3dmylodni4qtb8RW-j2cQKcFjWkDRhq48rp5qOEwEowk7uRo0GotkPV68GYAHuDxTJRiRx-ZSo45Jg2WlhU41qPSQ5gUF5RLUyQg2daXBcVZKbLMhOPiAydtnba2GqgNW9be6zGOp1thrPtvAGpeDjSCjuyCSY2PkiuN_dgZ8ipa_CW5qUeAxoIjoaC-9GDcZeQnZvSpi4Y2yq-vjo_vT2HFJnsC004SZothOxBVRrz_CSvQS5vkgXkVbiQ8r47zCEp_hdDhV1AOWhEDSeEQ7UoylQ2kIn1rq0rpo5ojMk2y9oozZr94Zi3HOiKryu1BTsSXm2bvSg1giCLib45GEjUqDZpCpnNMwHo8aoozciUzPcaqh5EuXvWFjMjxGCZW5oINuMQXkLOu4LHLrxFl3opwrlpytKWuRqWOAsvWkOSa2z4yku-hTBmIYGmPRQIiDa4eocqHGzUsZfUfWmxn53-Ngd_wgEU24J7CZ6ubEEit2ZVon8tks7dKMIWi7ANGUgQDnEeHfiEeZhS6rNEhJwYp4Ij3NP6qbYn11VRauMmm0tY1A-q-MNGgX7BIRRMJYWxph6xi53aCzyIsnqCI8_lQTY1_uZogFdd2cVVkcD_bXNAw8HZv8riERuKbcllvYDIAv1-4MM_pT0rOmGVOiwhEwpWxhcIUIlOi-5VkUGZ-Im4A1zCpwPYbAKbB1HwkjMgMEbo667-fzjuDnB6wJVJHQ_N3QN2p3YOfZ9MDftzg8FzwrFRvQFGJ09FHEcO2WwqEK0qsYEMZ6zXSn-Mgk3gzWVRNo_zbdnYjoPeQXRni1otoMatnEfKQEq_JwI1_lANFBxfRCGpOPAiXWbC3AnC0vn6j388_Cc5XrIFrEh2URsecLLAjAHOzsQBc0VjaULDvUEDyOBoRC9M-FP4c3okwQRJGOaU8EQZpm9DojNrDTPLKIkmSsKR511OPeoNQtVmuk3ONZcbUVWqGmWMuwfcx-LeQ7cZI1FK_pgoOUftJhohl3aBzPxxIEcjOplL4zj5MCy4r_9NYJI_pmbI3ZPLS7ho0blhiBsEt4cXj-ExkUOu6M05lTNsReVrtd9jORh44Pbsn3i3gfkOtzMYeyIj6Y5XnVvGPR-8iN9tksAEYHzc3tJh4WLU9XI_iAcmaWslSLlTr1jlNXv8XyzHWxBL9g62LwI7vxyrfXsGJuh42uwVO7Hn9vkLidIxUV8k_B1EfwjJkStfZ4dYOlytH2Oznx-wY5PIZtyNvxvZZ2qw3xlsdz60CL43RCkNBkkFubkTbpRH_LvcWrWnZXYOW3Gj8VNpxW7Q5yJk5U1YOZ6fvTEXrXhdpCup0j9HYVlIuKvbFLCR5VCS4W5l2pUJzYtWUgn4N8o8wqpHQwchYW5Dq0bgMYetgTkx-zt7-3ZsM4Ns2y8Gx9bD4DM9H0TReK36Y8_TXOTJGz1_KmXv_Hrk_eNNVL8d-MRFHDju4F4CWQcT1pnHg--yrpry9_IrT3ewz-kIjlg_6_tU2l4Qjhd5OC46QZIn4i1F55N5v7EW7ZAy3sqwAeXRFtBLeUYdn7wKHO_4B5Rf5PrDnfsCpmOdxT17T260gXRF4ItgGMQX1zi3e4DxObQub-DvSmx5-jQA061Lz3XG_mLOhBJPY_YGSl_Nc5lxTLZNP5NOaPZBQU-HTugEoYtgIl6q8mmvmpqUfC_qg3n4ErfAf2mOvudPXMamHBkfbh2kkWTPB_Iu94c-u3wyKd_1J35zp2GYh_T7nH4VPjQI2Sjzs257Zz8ejQM37d6hHeMK7xPNbcTpeOuELxDWqtTi8eMKuYadUG0uU_vfQg9drFleX6mZP4EexoKRPS_KH4jCM4_c6cCAk8cvaZRGIdls8PnKpta80psO0lsexaQ1PoIyT4Tsqek0csxzGdfUMadXH06NQAUnVjGmk3c_PDePu6yY5--cTsSSBrBPxChxT7Klm8VuzE90oaVYzvxVV4b9s_HbpPHLYXxbbF54nDSVXP79lw1-7IThyW7ph6lwEjd1QspD9EgeCO57WZhA1XC5c2JeUdYIEJCdFEvmMEYpjR3qOK67gEXgewnzY5_6NMr5zHME-EwuUDG-zj2plgYDmKqGTrwpqPtOWGT4zER08nmjd6pafuHfngDr7sTgXRqw_wM2lKX4">