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

    <tr>
        <th>Summary</th>
        <td>
            [BPF] Vector used across basic block causes assertion `LHS.getValueType().isVector() == VT.isVector() && "Cannot compare scalars to vectors"` to fail
        </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>
    ## Decription

In the following code, when a vector is used across basic block, assertion `LHS.getValueType().isVector() == VT.isVector() && "Cannot compare scalars to vectors"` failed when targeting `bpf`.

The problem does not exist when targeting `x86_64` or `aarch64`.
The problem does not exist when the vector used in `urem` is in the same basic block.

## Minimal Reproduction

https://godbolt.org/z/s9MeWe7dr

### Code

```ll
define void @f(ptr %0) {
BB:
  %B = ashr <2 x i32> <i32 3, i32 3>, <i32 1, i32 1>
  br label %BB1

BB1:                                             ; preds = %BB
  %B1 = urem <2 x i32> %B, <i32 -1, i32 -1>
  store <2 x i32> %B1, <2 x i32>* %0
  ret void
}

```

### Stack Trace

```
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=bpf ./crash-reports/dagisel-bpf/1.ll
1.      Running pass 'Function Pass Manager' on module './crash-reports/dagisel-bpf/1.ll'.
2.      Running pass 'BPF 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 0x00007f7fa316a980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #5 0x00007f7fa205ae87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #6 0x00007f7fa205c7f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
 #7 0x00007f7fa204c3fa __assert_fail_base /build/glibc-CVJwZb/glibc-2.27/assert/assert.c:89:0
 #8 0x00007f7fa204c472 (/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 0x00000000042c910a (anonymous namespace)::DAGCombiner::visitREM(llvm::SDNode*) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:4588:30
#11 0x00000000042b9c0f (anonymous namespace)::DAGCombiner::visit(llvm::SDNode*) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1707: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 0x0000000001c4f5d5 (anonymous namespace)::BPFDAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/Target/BPF/BPFISelDAGToDAG.cpp:58: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 0x00007f7fa203dc87 __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_jXhRZWULfn6kIckwBy2YIcClq2al5QsK4n3KHbKsjkwv366JSe-kDPAGRagQqKb1d_X3Wq15KRIn6YjyuBDTqUos12VFfnIOR05M_t9kZNqI8mqUKr4keVrIopUjuiC_NjInHDyIEVVlCTTpNYyJVyUhdYk4ToTJFGF-I5judayxJnJKHAuv91O1rK656qWd087mCwa0XiS6Xszla2SETuFD7m_e9ZBA_jAD13wPC8qALTd8VISLbjipSZV0YDSMAbkkRXPFEAzgCtegmzkAT3JbgXfky7dO-C6K4tEyS1JC6kJSpCPma6OPP8YBcvAQxGgAfjhvBQb0zB55WzQ3yjQaC8zCqpLucVJQaeZHaP5VnZ12oPcmO8qy7MtV-RGgsS0FkNDbqpqp0cMhp_DZ12kSaGqSVGuofYn_Ov4Sv5Xhmn5fG6cfoFm7_YEjv0oZRtSucpyoFNkKRl5zgrMtatALdR3jNnCuR03nyMIUyTYO0dTg4dsYCxbUPJIMkZH7AxrUCIMHcgW2BmWm3Z33-5iezNfUhLFE6nMxHO3CxirDIa84W_E5mA-mWoD0UzZBe6aZrTWEDl0dpCOD1DHXawazC6PPOk2j7bNIzqzemyeLGVl9NzQC0-PGua4HW8rLr6Tu5KL4-a0VaUEKgvcYlNsJf7IvHyCX75SO1Vr_B9nWipoUuphOwaf-x84clOFnywXqsZIsW9AB_pN5lC6lUoa9zyd_TbZgBzXpR6KMyPBOdjs9tSEh25L5yHbAuvwVlaLBTiaKHJYUt3HLwthI8Wi03x2f9dvaMT8tPHi9tS2LYo8XTSB7-jIpChAFzGymH1esKNhE-yaAHF9eTa7PSO6TrZZBcE6qdfgPLuirPDBQUTIqk2dTEBAa7OBaTOtawmCzgnPMVgZC5sAJUpYwBChxPcKPasRb30trbe7w5LHyBhfl8W65FsCsbTeyrxCEGTyXF5SZyodpxJgYy3LzRBBxtsKdiolQWcQws2TBsDYckOEKV-je44xxNNzd7KPUi7Kv6nzHEP4DvYl0G14XufGtcg1NlzxnK9licqEpi3EUiVx1CvF4EAjih4TNb8-J-DBY1jV8AMCq0qWObkA_y1tzCYHT28QrPbooG4Da9gEAljPDnEenf2fF_KUR7zjofpJ28J1meWVsYdd-jRqB5X8x7IA-ZJvmyUDY633_fLyV1mCK73eoaag9J88e8SGbJ1zpSfgOyDYD2Kz-ls67pCOYAkZYLdzfAMXVGilyERCOvsIwAELEHCLlw7wChoFx9QPbtCDrQ_r-90A75GKHa4218GI6rdI2QCpZIFPhqr8ILt7TthXo9eAC1fhijM34HHkkOWylGaPXEK4MvpqZrdp11hlef04Xue17dhVG_DgdKKLCSQcc-fRpTALxuSDGL8rhjo-l1FISg6EyD7aYCCEycR4cf-vH38khyqdwKqDJMnwgMIEowGYN5U7jAO1pQkNDwYNIINfM_XEeDrmHk6LJBggEeHKJTwpDNPXIalSqw3zlBESDYSEfSGeYCsOWrXJ-BI3iiXklK_mbp87FKzIuC8yGor0QvoK2wm0WmCsxsA5ac9qcddzXRqKxOWvTQyGKYFJFP55XtA2vjlD-MCcym8jAIbW_lZBRew6HG3D8yJ_2hY1nE7gmKF3ZnuILX6YbVFsYeeF8GAaHjKdVTdnVwPd_tswf58YfJwUVDtgmijn-VEEP8xpWfZ3EJrEwln9GsuvQdENTbD0OhTpkCLj0ZspClv7IiQjGplNqyXJBiSjOAneTBK23R7BpvdSPsh_uhbfzjGgJnmIWo7ekCONV38b2RZHjNbn1A0-s9mN1LXCRHXW72lg_76rbP1TFEJ9LzSrt1WI31OI77qh_zOFXEClR2aWp2dwyjHS3ie3-imXIY6GUAgbV49OMKTDnPRFOrZ1jpc9c3t_1jF2pjJdLTM4M3A8JLLFsCuVFezrtiUH_MvC3Ojp3tDOaQP9Aspmh1pBhmYKJqO2ly2HNjPItn0xOHZjDT7F5IHZf9zW5OHA5E7Kk1eafKZUa3XdM_vhgNrmL59A1g0c1jmvId2oT9eRzA9epFvW-e_5FRcbCAZ7Zj26z_o-h68XhP313M9EhbfyU_-lPQkO_DDrXfElNHBnbq-hAKjsN2La42to-1Evb6S9vJH5YcSkT34KFa9QOiSPsvv_GfYImIZVjIejdu-lvTyRCd8XQddzz6_x2f1V0AfzubiBr0u55uKpg2K_Cj1Id2H3bP2S0gEXzmP6Ci5X5mqr73dN04fwCE0-FLQ82IBH4LP4pfV19TXJ-Z4_MJI3JOfwbjKgzEy23JnvYrtrY8ZnsfGZP7CUP_S4NHRfJvPpRNxgkKLRXormpCzivjCX7JmSBxcSG16aHHqQRl9e3l_Bub-Sj--wJ1eQxmhTFfZ7n1Uyc_5rN10aDjAH0qFky_Hl4fuL91yT4XRUNrjjYamIQrJc4jXOUle8rJZ7LK-5VRIa74DMdZotmk4zj7lhYh5eZLYHQxoP2cNCIlYwxorXv0Yw1032-cN90-A12ImcukEQxj6sVnqSTlkas5ifVFml5HTkz3Eb9U_JfecV7vMX4ERw6NGf_BIcGvDG76Qu1fTXX_z4URR5J5sp7JaeYEEifM9JhJekMkoo9VgKO08Sh_6JeQurUUcgP5c_iJkCsfinJ9mUOpS6rhM7LtiQTuI09T3q0zT2WCRdf-Q5EpxITRAHvqM-KacGEphQQyeeLXTbCZrN1rk0JsH5eV1tinL6jf_5BNA3J0b21GD_C2hYBX0">