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

    <tr>
        <th>Summary</th>
        <td>
            [Hexagon] Cannot select `truncate` for i1 vectors
        </td>
    </tr>

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

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

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

<pre>
    ## Description

Truncating a vector into a `i1` vector will crash backend with error `Cannot select: t5: v8i1 = truncate t2` when targeting `hexagon`.

## Minimal Reproduction

https://godbolt.org/z/7bhMxzcdP

### Code

```ll
define void @f(<8 x i8> %0, ptr %1) {
BB:
  %C = trunc <8 x i8> %0 to <8 x i1>
  store <8 x i1> %C, ptr %1
  ret void
}
```

### Stack Trace

```console
LLVM ERROR: Cannot select: t5: v8i1 = truncate t2
  t2: v8i8,ch = CopyFromReg t0, Register:v8i8 %0
    t1: v8i8 = Register %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/6.ll
1.      Running pass 'Function Pass Manager' on module './crash-reports/dagisel-hexagon/6.ll'.
2.      Running pass 'Hexagon DAG->DAG Pattern Instruction Selection' on function '@f'
 #0 0x00007fc53da76f8a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Support/Unix/Signals.inc:567:11
 #1 0x00007fc53da7713b PrintStackTraceSignalHandler(void*) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Support/Unix/Signals.inc:641:1
 #2 0x00007fc53da757b6 llvm::sys::RunSignalHandlers() /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Support/Signals.cpp:104:5
 #3 0x00007fc53da77865 SignalHandler(int) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Support/Unix/Signals.inc:412:1
 #4 0x00007fc53bfe7980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #5 0x00007fc53b2e3e87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #6 0x00007fc53b2e57f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
 #7 0x00007fc53d9129c4 llvm::report_fatal_error(llvm::Twine const&, bool) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Support/ErrorHandling.cpp:125:5
 #8 0x00007fc53e26dccb /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:3817:3
 #9 0x00007fc53e26b262 llvm::SelectionDAGISel::SelectCodeCommon(llvm::SDNode*, unsigned char const*, unsigned int) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:3719:9
#10 0x00007fc54da67fd9 llvm::HexagonDAGToDAGISel::SelectCode(llvm::SDNode*) /home/henry/aflplusplus-isel/llvm-project-latest/build-debug/lib/Target/Hexagon/HexagonGenDAGISel.inc:90997:1
#11 0x00007fc54da77c41 llvm::HexagonDAGToDAGISel::Select(llvm::SDNode*) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Target/Hexagon/HexagonISelDAGToDAG.cpp:956:1
#12 0x00007fc53e25f009 llvm::SelectionDAGISel::DoInstructionSelection() /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1178:5
#13 0x00007fc53e25e05a llvm::SelectionDAGISel::CodeGenAndEmitDAG() /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:949:3
#14 0x00007fc53e25ca2d 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:701:1
#15 0x00007fc53e25c4bd llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1641:11
#16 0x00007fc53e259997 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:480:3
#17 0x00007fc54da8541e llvm::HexagonDAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Target/Hexagon/HexagonISelDAGToDAG.h:48:23
#18 0x00007fc54128cf55 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/MachineFunctionPass.cpp:91:8
#19 0x00007fc5403c5606 llvm::FPPassManager::runOnFunction(llvm::Function&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/IR/LegacyPassManager.cpp:1430:23
#20 0x00007fc5403ca432 llvm::FPPassManager::runOnModule(llvm::Module&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/IR/LegacyPassManager.cpp:1476:16
#21 0x00007fc5403c5ed9 (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/IR/LegacyPassManager.cpp:1545:23
#22 0x00007fc5403c5a4d llvm::legacy::PassManagerImpl::run(llvm::Module&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/IR/LegacyPassManager.cpp:535:16
#23 0x00007fc5403ca711 llvm::legacy::PassManager::run(llvm::Module&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/IR/LegacyPassManager.cpp:1672:3
#24 0x0000000000419bc6 compileModule(char**, llvm::LLVMContext&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/tools/llc/llc.cpp:739:41
#25 0x0000000000417f65 main /home/henry/aflplusplus-isel/llvm-project-latest/llvm/tools/llc/llc.cpp:420:13
#26 0x00007fc53b2c6c87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#27 0x000000000041773a _start (./llvm-project-latest/build-debug/bin/llc+0x41773a)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMWd9zmz4S_2vkF409QuLngx-IHdLeJPfNJL3vw714BAhbV5A8kmiS_vU3EmADTabJXdO009hYErufz-5qtSxUa74XjK1BcAGC7YK25iDV-hP9_pRxfVjksnxaA0wAJnDLdKH40XApANoClHafX1QrCmq42EMKv7HCSAW5MBJSCELEPRCiYfiB1zUsFNUHmNPiKxMlfODmAJlSUtnVGyqENFCzmhUGkBSawH5-i7kHAdlC0-li0GAr9uHABDRU7ZlTD0J0YI90LwUI0WqMsWdwwwVvaA3v2FHJsi3mVA7GHDUgKcAZwNlelrmszUqqPcDZd4CzKD_cPH4vytsfZVvxG1myyUyIuv913Q2UrOKCwW-SlxD4qAI4BmQTw0fIY0AuIcABAngDj0bZaw_gBILoorv54sIic5fQzm7OFoE_SIFGngY9QC6H-7SRik1mnKiJ0n6pYsYh7blE2xmp521wb2jxFX5RtHjeFIUUWtb93PX13zfw8u7urzvr5bc4v8docL8iBnhTHNyyjTw-ZUo2d2wPjTPnHdtzbZgCJLVLOzP3EiA03iDD3T4sHq36LGDVii5aSAqrbvT2-jK9v4S6zRtuIIV5u4eKHaUy1vizUOLm0OarQjYAZ3X9bfhaHpX8j2WLM651yzTAGaSihFwUdVsyaA5stGGMNWsf2J2hy7Y5nsLCxnxyq-Re0QZStW8bJowFAVczfcuaGqat2rzldbksWd7aIM-5cCsLuGyM4seaAbLt95QT4rAsO5oWbEn3XLN6Oew7nIWrIdo9C-euFcLuzSPVGgIcZb0h4a0duKGC7pkCOIJSwEaWbc3sqjeosoudOvycuk899m16tQTkcptewVtqDFMCfhbaqC4HwHsXc9a_HZLB3VZEt1GjPmAAJgiiR4QQiqoiICWNwiqm0DmVpICk-kl3F7eKC-Pc1G0HHJ8XKfqwk9ooRhuAQxukXBi33XF2kA2zX0yoJ4AzWtXHutX2b2kN8KIrh7jiOcDZfXu0hgM4-5fgj3aA7wWt9YqLApA0CCNAUs87s_JmrCKP5HBGoZPxiYqytk6LXXrA6W_EHfp2t45g4xnsIMrD55xx14oJem1z77vgHgAXR7szPeRbc58Bk7md4zCAc8P-3mDwPTw1qj_GmFcsSmIEdzvF3PGxUwY66_XSH-NwF_rLmov2cbkXbTdxNAfFaLnScoUAvkCPHk5iBHByVhNM1GBGWBxBRbm2OaDLTDZ31jwvlpu___Hw7_z0E69wBHCmHQ-As5XNGPpJl-xoc0Xb0dRP-ptDI1r704leufC3UYTOSMIZkiCqPEhz6Zi-DokpO2u4u5ySeKYkmng-8XBS-KNQ7TLdrqKG1jtXEU0yxpcHWzrY49P0GSOXsn6fKLm02l00crEfAhkH00COx3QYDsuiyH8ZFltKXTGb5E-peZtezX5-vmd1j47Enk1o5AwvmcHLcYhH1p7LGY9a5RvZNPY4GHngfvtPW-DZfLeBrXCFcwmLA1WDW6Yzv3gTv9kkkZcAkianCs0bH1x-ScOoKpORSfqzcptefZEvWOUle_xfLKclSEf2iyvqAc4-nU77_uqKnXh22StBSRKd85cl6k2JRlHhe68n-i4kJ658mZ3FMuDq_ZgE4ZQdnkZ2UCGU_DSyt3JU74zKnV96CL41RD0vis9JxXIjM24MBfSn3Hq1qSgvG26cxg-llfjJORdZVv6MVUFx-cpcdEE1Ly5qWXydhCWvuTY7bpiiRipANvOpkhnKe0lClmwn3YO7niwdhYTNXEa1zH5XtNbuwtV35HIy5hZ1Y38YnO48DD_S8xHypns1mHvez1_r-bSuz87XE--fHqLO5cAHbuK-Jh-xDmeskySJfspateIvcUOLAxdsIDhh_cPch9L2YzTd5NH00IkD32OvOXQ-mPcrz6KDowxIikeUxyWg7-G4qIIAvgjcPvGPKD_L9d2d-wymIWvbKI7P5MYFpI9IEYRo_GSZ3dp7hwbGx9D6fAdwds32tHgagRn2pU_Q1F8YzShRn-BXULpxfZlpTPZDv5NO5Oqg8EzHm3uIlRZMTIUUT41sNRS0Yfromi9JD_yP5hj4wcxleM6R-uMDpHaS-n7TWd7n5njOLh9MKiDBzG9kHoaR5_2c05_CxwsjPMn8eCjvun--l-RFCAvZHHnNTnFlnxPdY0Q6LZ2ur_--2Uhh2OOvO8iNlLXuGrnd51CekMS1e87Qgxn0qAoD2FAu3hGFj21e8kYGnLVfirCII7jb1TwvdtpQZXYDpNe0YgrdDh2h7tJNOjmuL0N8_9yYseqjuREiQmGn2KaTNzfPXburE3Pqd51egCzKNSkTktAFW3th5MWEJH6yOKyJV8U48KPIr8I8oUkZR14Q-D6qaFVWNFrwNUYYe9hmBS9ByQrhqsyDsmLIj1BOEPARayivVxbtSqr9wr1UWAdJGAeLmuas1u5FH8aCPUA3CTAGwXah1o5h3u418JEt2fVZiuGmdm8IhxIh2E5f1kAQouHtDAgRrKSC3Ovf-ulFq-r1__4-xKH_bwAAAP__qtnpfQ">