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

    <tr>
        <th>Summary</th>
        <td>
            [VE] `udiv` / `urem` crashes backend with assertion `LHS.getValueType().isVector() == VT.isVector() && "Cannot compare scalars to vectors"` failed
        </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

When targeting `ve`, using `udiv` or `urem` with the last operand being a constant vector with all `1`'s (examples listed below) crashes backend with assertion `LHS.getValueType().isVector() == VT.isVector() && "Cannot compare scalars to vectors"` failed during pass `VE DAG->DAG Pattern Instruction Selection`.

Here are some vector operands that crash the backend:

v4i1: `<i1 true, i1 true, i1 true, i1 true>`
v4i8: `<i8 255, i8 255, i8 255, i8 255>`
v4i16: `<i16 65535, i16 65535, i16 65535, i16 65535>`

The problem doesn't exist when using `sdiv` or `srem`.
The problem doens't exist when targeting `x86_64`, `aarch64`, or `riscv64`.

## Minimal Reproduction

https://godbolt.org/z/4Kr9xMEb8

### Code

```ll
define <4 x i8> @f(<4 x i8> %0) {
BB:
  %B = udiv <4 x i8> %0, <i8 255, i8 255, i8 255, i8 255>
  ret <4 x i8> %B
}
```

### Stack Trace

```console
llc: /home/henry/aflplusplus-isel/llvm-project/llvm/include/llvm/CodeGen/SelectionDAG.h:1124: llvm::SDValue llvm::SelectionDAG::getSetCC(const llvm::SDLoc &, llvm::EVT, llvm::SDValue, llvm::SDValue, ISD::CondCode, llvm::SDValue, bool): Assertion `LHS.getValueType().isVector() == VT.isVector() && "Cannot compare scalars to vectors"' failed.
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/build-debug/bin/llc -mtriple=ve ./crash-reports/dagisel-ve/1.ll
1.      Running pass 'Function Pass Manager' on module './crash-reports/dagisel-ve/1.ll'.
2.      Running pass 'VE DAG->DAG Pattern Instruction Selection' on function '@f'
 #0 0x00000000047ada8a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/Support/Unix/Signals.inc:569:11
 #1 0x00000000047adc3b PrintStackTraceSignalHandler(void*) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/Support/Unix/Signals.inc:636:1
 #2 0x00000000047ac286 llvm::sys::RunSignalHandlers() /home/henry/aflplusplus-isel/llvm-project/llvm/lib/Support/Signals.cpp:104:5
 #3 0x00000000047ae365 SignalHandler(int) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/Support/Unix/Signals.inc:407:1
 #4 0x00007f66fcb92980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #5 0x00007f66fba82e87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #6 0x00007f66fba847f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
 #7 0x00007f66fba743fa __assert_fail_base /build/glibc-CVJwZb/glibc-2.27/assert/assert.c:89:0
 #8 0x00007f66fba74472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
 #9 0x000000000127cb1a llvm::SelectionDAG::getSetCC(llvm::SDLoc const&, llvm::EVT, llvm::SDValue, llvm::SDValue, llvm::ISD::CondCode, llvm::SDValue, bool) /home/henry/aflplusplus-isel/llvm-project/llvm/include/llvm/CodeGen/SelectionDAG.h:1125:5
#10 0x00000000042c87fb (anonymous namespace)::DAGCombiner::visitUDIV(llvm::SDNode*) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:4481:38
#11 0x00000000042b9bf6 (anonymous namespace)::DAGCombiner::visit(llvm::SDNode*) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1705:40
#12 0x00000000042b93a8 (anonymous namespace)::DAGCombiner::combine(llvm::SDNode*) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1828:10
#13 0x00000000042b89b6 (anonymous namespace)::DAGCombiner::Run(llvm::CombineLevel) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1626:18
#14 0x00000000042b829f llvm::SelectionDAG::Combine(llvm::CombineLevel, llvm::AAResults*, llvm::CodeGenOpt::Level) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:25478:3
#15 0x000000000451175f llvm::SelectionDAGISel::CodeGenAndEmitDAG() /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:772:3
#16 0x000000000451130d 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/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:688:1
#17 0x0000000004510dab llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1603:11
#18 0x000000000450e356 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:467:3
#19 0x0000000002465705 (anonymous namespace)::VEDAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/Target/VE/VEISelDAGToDAG.cpp:38:5
#20 0x00000000035783e5 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:91:8
#21 0x0000000003c55c66 llvm::FPPassManager::runOnFunction(llvm::Function&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1430:23
#22 0x0000000003c5aa92 llvm::FPPassManager::runOnModule(llvm::Module&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1476:16
#23 0x0000000003c56539 (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1545:23
#24 0x0000000003c560ad llvm::legacy::PassManagerImpl::run(llvm::Module&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:535:16
#25 0x0000000003c5ad71 llvm::legacy::PassManager::run(llvm::Module&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1672:3
#26 0x0000000000d38a5c compileModule(char**, llvm::LLVMContext&) /home/henry/aflplusplus-isel/llvm-project/llvm/tools/llc/llc.cpp:737:41
#27 0x0000000000d36e02 main /home/henry/aflplusplus-isel/llvm-project/llvm/tools/llc/llc.cpp:418:13
#28 0x00007f66fba65c87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#29 0x0000000000d3660a _start (./llvm-project/build-debug/bin/llc+0xd3660a)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzNWVtT6zgS_jXhRZWULd8f8hCSMIdd2KEOTLZqX1KyrSTeUeyUJQeYXz_dkhNfCEM4cwaggm3duvvrbnW35bhIn8cD6sCPzLhMymynsiIfWLOBNTHX_254ThQr11xl-ZoMfGvP4TKgU1LJuqdKsz3cSFHqVsm32HrM1IaoDSeCSUWKHS9ZnpKY4yJGkiKXiuWK7HmiYKGezYRACrZmEEgyoCF_Ytud4JKITCqO60XxOKARSUomN9Afs-R3DoQNASl5iRCQzM23-xGIvWCi4g_POw7UYOEokwvN0jTJwJnBjyweXgxQH35wo1OW54UCkbc7VnIiEyZYKYkqauElzEHEK5YJEDGtSsS4A2FQjMWczCa_DAfOHG7kjinFy5xcA_yySrSs91xw_QSzR23lf-PATrMstvygqVqTwH_DlFGDVnOtiIEzaZPYu5kNXSjIwJlmNgGuHK3314_OHBccKIQtCiGhnqenvv7UXW37bQF84nueY2af0WiRMtcHgLori1jwLUkLLnPwFEX4E7gHeURnPbql7LilNG45Okkll30qHZd_Cv2l79ZuDzfGymRz7DD0y0wme93XMWG9u26zPNsyQb5z4Joau7enbZTaSTQdvYLfukjjQqhRUa6h9Qf8u_8uo6fbeRy-pI3kp0XKOyMgmf4JYTpSvspyDs4-dckTQYPOycC1VujrnT7qWdr5g0uz8PLy6FAERy9xwxDc8eTEwil5h4vUREuuXpCqmQ-CWQ_Pafj3CnyfPJQsOa0FDDaFqMeESLQ_0qsN7Cq88bx8hjtbiZ2oJP4PM8kFdAmx3w7BYv-HrVc34ZbliahS3nSg-n_h4IlXx60Me320AT62TV1kp2eCJp3J_UxHpHZPa5HpAde752o6BfPoQNlZflMkJjhNW93zxUO3o2bzauf1_cz0TYs81f7z2sy4KEAXEaKYfF58pUEdX-vtdXczn9zPiazibaYgocTVGlxpV5QKF_b2E-SGKh4Bg8ZmPdNmUlYcGF0RzFK1hXVcNREWo6tCB6vZG5dLq-3uuD9w40d3ZbEu2Rai9rra8lyhEGT0kl9cZSIdphzExlaW6ykJGW4VZGHwVWe253qh5j800FDAlK3RO4d7dEB7dNjhNnL_XuV5k3tocFXlJsXcYccty9mal6hK6NpCHBIcZ53HBedpTvQUp_dkOcN_dZAN2iYUBXVIgC1tEevJOvy5AUtZyFreKZ-lebiDVKu0Lczup2EzqWSPywL4c7attwvMNZ73w1tfZDHu8mqHeoKn3_LsCTuydc6EHIHfAGPPj_TOb-DYfTiJE5Oe7IbGN3A_gTYK90WWDujkIwT2HUzRLXlpT96Ehv4p9YMXdMSWx7390wQ-SJrscKfZFkZTr5HU6UnKHd8jfVV-kN1dK-iq0a2FC1a-v0riiEahRZbLkkuIanwJoUrrq6ZuqoyhyPLqabjOKzOwUxvw4HQkixEk2EvryUYqGI-PbLw2m5iFlIcBKRkAIodIg0EQiCXD6eJfj_-Lj006gl1Hr6TGAQ8jjAVg3pTvMApUBiZ07LU0IBncNemR9nSsLa1GEr8niRusbMLiQiM9TxKVGm3oVZpJ2GMSdJkErrNioFVT-y8xSSxjdj52s-74YFhGXZZhn6Ub0DNsl6DVfG01B5yTdqwWtT3XpkES2-zcoqBfDugi4e_XBE3nu6uDD6ynvCYCYGjtpgqahMEqRtuwvMift0UlSc62XO50eoiM_EBtWmwh60J40B37TGbqt9n1oqfc_2joPycIn0YFzZY0dZhzXe30TtjA7KYQGkfxyv8xmF8Doh1Yno6ZDUTah-iw8N0QE9P6IiBDfL-CrNWAdHogwyh-vx0h73YA1qM3fM__7mZ8P0af6uqh5atuHyONVn8Z2qYnjNbF1I4-k8l3LiuBdeqkO1KL_etOmfanKIR6boBWdxqFeB2FeLYdeK8p5BoaHTCTPJ3DK47m9nOKq1ex9OWoAQWQuTpw_D4cx0rfhGN6L5nMkktRJL93jJ3h8d4yg5cGhm-IzrQ_lHIFid305CD_stBHlbIztfW6gX5xONRaQYmmH3RJ7cw7fYfjro4ffQlxTGb1P8Xkfhg2pSyaPOiZ3EpZfKbJJ0I0Vpcdsx_fT5sC5hPA2r7ltF7YEG7YhWtxx_PfhFtW-a_5LUs2EAwOyDpwX4x9Dl7XD7r7uVOKUtf3IDe_lZMW-KL_UHwJBTzow1p4WMz1BSU6SFdjdsJO1Ug7VaPjBaHDPfKqoHh80oJ4Ets_Z9UTwtSoIqwSm8RLO0Wik3he4rfd9uoO1x6OgT4Yz_V3uNzwNUueW1IctqDrWJg6G6ektIeFsYiegeVWH2t1va7u-hAcgS6G_AaH08Phe0701ua6_ZrgPNfrGcntg7NYuxIQmpJ5btG73u6aiPFZaPTXpY6lvL7HpYH9NphPB2L7vfqMduozK3VC5iX6eD0T_OhCyYaVuoDu1dA3N4tbeOtX_OknJGQFNYzUzcRcDyWlgynIbTIuDXoy-9yiZMuy_J9g79q6vGmprHfC43tJGJDlEg9xllKxUi0PspxzppRIPAHSh2nmUQ9qOvp8yXHxGLN5K6RRHz1sJGIYY6w4_wOCPmwy64-nTcfvYBd8bPt-6AaeE9gX6dhJIydiFypTgo8H3iWkT2_W_qIPNNuf9L_sN_eLqhTjH__m44VR5F5sxiuL2TG1bW5FlsWSVZAEjNHEsaJVHPMVuxAs5kKiqoB9zh-JJoGieLOLbEwtCqttz7Ip9exRGsGa1POs0HUt5vgD1-LgRWKEcuDH3YtyrEUCG0oYxDcL2QyCYrN1zrVlkD6r1KYox9_YH88g-uZC8x5r2f8Es_BI-Q">