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

    <tr>
        <th>Summary</th>
        <td>
            [Hexagon] Cannot select `vselect` for v8i1
        </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

The following code crashes backend with error `Cannot select: t14: v8i1 = vselect t27, t24, t21` when targeting `hexagon`.

The same problem exists when using v16i1, v32i1, v64i1.
The problem doesn't occur when targeting `x86_64` or `aarch64`.

## Minimal Reproduction

https://godbolt.org/z/Kbs6n6MfP

### Code

```ll
define void @f(ptr %0, ptr %1, ptr %2, ptr %3) {
BB:
  %V0 = load <8 x i1>, ptr %0
  %V1 = load <8 x i1>, ptr %1
  %V2 = load <8 x i1>, ptr %2
  %S = select <8 x i1> %V0, <8 x i1> %V1, <8 x i1> %V2
  store <8 x i1> %S, ptr %3
  ret void
}
```

### Stack Trace

```console
LLVM ERROR: Cannot select: t14: v8i1 = vselect t27, t24, t21
  t27: v8i1 = C2_tfrrp t26
    t26: i32,ch = load<(load (s8) from %ir.0), zext from i8> t0, t2, undef:i32
      t2: i32,ch = CopyFromReg t0, Register:i32 %0
 t1: i32 = Register %0
      t10: i32 = undef
  t24: v8i1 = C2_tfrrp t23
    t23: i32,ch = load<(load (s8) from %ir.1), zext from i8> t0, t4, undef:i32
      t4: i32,ch = CopyFromReg t0, Register:i32 %1
 t3: i32 = Register %1
      t10: i32 = undef
  t21: v8i1 = C2_tfrrp t20
    t20: i32,ch = load<(load (s8) from %ir.2), zext from i8> t0, t6, undef:i32
      t6: i32,ch = CopyFromReg t0, Register:i32 %2
 t5: i32 = Register %2
      t10: i32 = undef
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/5.ll
1.      Running pass 'Function Pass Manager' on module './crash-reports/dagisel-hexagon/5.ll'.
2.      Running pass 'Hexagon DAG->DAG Pattern Instruction Selection' on function '@f'
 #0 0x00007f9db4cf6f2a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Support/Unix/Signals.inc:567:11
 #1 0x00007f9db4cf70db PrintStackTraceSignalHandler(void*) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Support/Unix/Signals.inc:641:1
 #2 0x00007f9db4cf5756 llvm::sys::RunSignalHandlers() /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Support/Signals.cpp:104:5
 #3 0x00007f9db4cf7805 SignalHandler(int) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Support/Unix/Signals.inc:412:1
 #4 0x00007f9db348b980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #5 0x00007f9db2787e87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #6 0x00007f9db27897f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
 #7 0x00007f9db4b6a424 llvm::report_fatal_error(llvm::Twine const&, bool) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Support/ErrorHandling.cpp:125:5
 #8 0x00007f9db5506e5b /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:3817:3
 #9 0x00007f9db55043f2 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 0x00007f9dc4c9feb9 llvm::HexagonDAGToDAGISel::SelectCode(llvm::SDNode*) /home/henry/aflplusplus-isel/llvm-project-latest/build-debug/lib/Target/Hexagon/HexagonGenDAGISel.inc:90997:1
#11 0x00007f9dc4cafa41 llvm::HexagonDAGToDAGISel::Select(llvm::SDNode*) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Target/Hexagon/HexagonISelDAGToDAG.cpp:953:1
#12 0x00007f9db54f8199 llvm::SelectionDAGISel::DoInstructionSelection() /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1178:5
#13 0x00007f9db54f71ea llvm::SelectionDAGISel::CodeGenAndEmitDAG() /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:949:3
#14 0x00007f9db54f5bbd 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 0x00007f9db54f564d llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1641:11
#16 0x00007f9db54f2b27 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:480:3
#17 0x00007f9dc4cbd1de llvm::HexagonDAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/Target/Hexagon/HexagonISelDAGToDAG.h:46:23
#18 0x00007f9db850b1d5 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/CodeGen/MachineFunctionPass.cpp:91:8
#19 0x00007f9db7653676 llvm::FPPassManager::runOnFunction(llvm::Function&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/IR/LegacyPassManager.cpp:1430:23
#20 0x00007f9db76584a2 llvm::FPPassManager::runOnModule(llvm::Module&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/IR/LegacyPassManager.cpp:1476:16
#21 0x00007f9db7653f49 (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/IR/LegacyPassManager.cpp:1545:23
#22 0x00007f9db7653abd llvm::legacy::PassManagerImpl::run(llvm::Module&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/IR/LegacyPassManager.cpp:535:16
#23 0x00007f9db7658781 llvm::legacy::PassManager::run(llvm::Module&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/lib/IR/LegacyPassManager.cpp:1672:3
#24 0x0000000000419b16 compileModule(char**, llvm::LLVMContext&) /home/henry/aflplusplus-isel/llvm-project-latest/llvm/tools/llc/llc.cpp:737:41
#25 0x0000000000417eaa main /home/henry/aflplusplus-isel/llvm-project-latest/llvm/tools/llc/llc.cpp:418:13
#26 0x00007f9db276ac87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#27 0x00000000004176aa _start (./llvm-project-latest/build-debug/bin/llc+0x4176aa)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMWktz2zgS_jXwBWUVHnwefJAly8muveOysznsRQWSoIQNCagA0I_8-imApETSdqxkkjhTE4kCwO7v6252N0AzY8RGcn4GwnMQLk9YY7dKn31gX59WwmxPMlU8nQFCAaFwyU2uxc4KJQFaAjRvPz9tOSxVVakHITcwVwWHuWZmyw3MWP6FywI-CLuFXGulIYjQgkmpLDS84rkFdA4tDtzXfSIwBHQJ79spaEkMyAJaErRfGEQIPmy5hJbpDbdOH4jQlj-yjZIgQrMpLsNqDndaZRWvIX8UxppWQGPczfc4EtjJvqeku4gCgWcHAf29heJGAhJbqPK80S-geEyidRQ4hC1LxnS-9QMjVJ0tr4UUNavgLd9pVTT51Khba3cG0DkgK0BWG1VkqrIzpTeArL4Csvp3ZiIZXZc3z2U78QtV8NFMhNr_q6odKHgpJIf3ShQQBKgEJNlZDQEJkTNDd40H12RwTQFJIYjPW1nn5w6ov4Ru9jPyXqwUKyCgiwQ-QoEBvRgIQMPl-M3leLicvLmcDJbf-dVdQA3Xt0jdXc9G8Yuje6nGKs2fzd-N7NMt1dx6G3deiJcTd7zsvTvL8i_wk2b5y07MlTSq6uaurj5fw4vb279u3TP0D56tDrKbGN6wIGtbar2DlkT9Guh_0DkU1IVFvt27BNAFIEnrHJKYxAVKqVXtrCL0DAGSOn1f-aNtx0Xi7GdRi8J9NrLgJaBzJ3uvz2l8pnChdk8rrepbvukk3PKNMJbr9vZhpFnc3e7v7NeNYtFrwWi4rsWyt0zwmmXo0DL0RyyDv22Z4FuWCX7IMr3HLX3NMvh4y-DXLIOGlkE_YhnybctE37LM8yA9xjK9DBu-ZhlynGU-Slg2sk3udA670Zuri_ndBTRNVgsLGcyaDdR8p7SFVsFJ5hd222SzXNWArKrqvv863Wn1f_eIk5UwpuEGkBVksoBC5lVTcGi3XRn2Rdi6XNLVoTa7FE2926dtV6LSG602mtWQ6U1Tc2kdCDib6DutmOXGqc0aURWnBc8aV5MyIf3KHJ7WVotdxQFddoXZC_FYTluaDmzBNsLw6rQv3mQVzvri5ApwettI6UrrjhkDAYlXnSHhjRu4ZpJtuAYkhkrCWhVNxd2q71DlFnt15CV1Hzrsy_nlKaAXy_klvGHWci3hR2msbks2vPPZ1Pm3RdK724lo62rchQogFEH0iBBCcZkWWZCXUUkY9E6lc0Dn5sm0FzdaSOvd1NYAkhwWafawVsZqzmpAfOwLaX05Jqutqrn74lI_AbJiZbWrGuP-nToDvOrKPq5EBsjqrtk5wwGy-q8Uj25AbCSrzEzIHNB5GLnygPGBFZ6wilGRwQmFVsYHJovKOS3xNZHMfyPuKHApagCbTGCHcRi95IzbRo7QG0CSX4O7B5zv3JOJkUvr4QEwndo5QSGcGvb3BkOAydiowRAjDZIsTRBcrzX3PdNaW-it10lvW-bTSsjm8XQjm3ZiZ7eas2JmlGsXztEjJmniG4e9mnCohsRJzJMYaiaMywFtZnK5sxJZfrr4_K-H_2X7n2TmGp-V8TwAWc1cxjBPpuA7lyualqZ5MvcejWzcTy965sPfRRE6IIkmSNK4xJBlyjM9DoktWmv4u7ySZKIkHnk-i1hAgkGotpluXTLLqrXfZY0yxqcH1-m7ntF2GSNTqvo1UXLhtPtoFHLTBzIJx4GcDOmEIYp4mP00LG7nc8ldkt-n5uX8cvLz4x2vOnQ0wS6h0QO8dAIvoCUZWHsqZzjqlC9UXbtyMPDA3fI_bj_m8p1rVfyOu4D5luneLeOZn_wQf7dJYpwCOk_32xI8LFx5kKclz9KBSbpauZxfflKvWOU1e_wjluMWpCX7ye_JAVl92Ff77uqS73m22StFaRof8pcjisdEWckCfDzRX0Jy5MrX2TksPa7Oj2lIx-xGJS8MygSn6ZuRvVSDfmfQ7vzUIvi9IYpxnBySiuNGJ9xizNmb3Dq1c1lc1MJ6je9KKw3SQy5yrIIJqzDLiiNz0TkzIj-vVP5lFJaiEsauheWaWaUBXUynCm6Z6CRJVfC18id-ZrR0EBJ-E6Yb7r5LVhl_4fu79kxmP-YXtWN_GJy2Hkbv6fkY4fGzGk49HwXHen5eVQfnm5H395uoQzvwjg9x15MPWEcT1iQj8ZusdSP_ktcs3wrJe4Ij1s_m3pV2kKDxQx6Pi05W4IIfU3TemfeRtWjrKEeAzsmA8qgFTEKU4SKErwJ3O_4B5Re5_nLnvoCpz9ouipMDuVEDGUchjeLhznJ14-7tDzDeh9bHW0BWV3zD8qcBmP65DCga-4ugCaUkYOQIStf-XGYck93Q76QTRz7bHOjgqYfKwIFJmFTyqVaNgZLV3Oz84UvaAf-jOYZBOHEZmXJko9ah8pK686aDvI_17pBd3plUSMOJ3-g0DOMEv83pT-GDo5iMMj_p27v2vwCnGY5gruqdqPg-rtw-0W8j5uPW6erq8_VCScsff14ht0pVpj3IbT_79oTG_rjnAD2cQI85Y7BmQv5CFAF2TT8eGHBy_BKxPInhel2JLF8by7Rd95COOYrJTdOfCLWXftLL8ecyNAgOBzNOfTw1QsQYbBW7dPLdh-f-uKsVsz_v2r_1OynOaJHSlJ3wMxzFOA5xSoKT7VmUBbgow6KMS5LGPIlQkaVZFIUJxgWm8Yk4I4gQTAghlBIUzHAUFlkcFwihLChKDALEayaqmUM7U3pz4l8qnIVpFNGTimW8Mv4vBAiR_AH6SUAICJcn-swzzJqNAQFyLbs5SLHCVv5PC_oWIVyO31BCEKHujSSIECyV9i-RThpdnf34ixAP--8AAAD__xfYAgA">