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

    <tr>
        <th>Summary</th>
        <td>
            [NVPTX] DAG->DAG Pattern Instruction Selection crashes on setcc
        </td>
    </tr>

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

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

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

<pre>
    When compiling the following piece of code, NVPTX backend crashes.
The bug can be reproduced from LLVM14 or latest commit `e723c69b94`

You can find the reproduction here: https://llvm.godbolt.org/z/EWs3f5bsG

```
define void @f(<32 x i1>* %A) {
BB:
  br label %BB1

BB1:                                              ; preds = %BB1, %BB
  %L = load <32 x i1>, <32 x i1>* %A, align 4
  %E1 = extractelement <32 x i1> %L, i1 false
  %E = extractelement <32 x i1> %L, i8 16
  %C = icmp sge i1 %E1, %E
  br i1 %C, label %BB1, label %BB2

BB2:                                              ; preds = %BB1
  %I = insertelement <32 x i1> zeroinitializer, i1 %E, i64 0
  store <32 x i1> %I, <32 x i1>* %A, align 4
  ret void
}
```
```
LLVM ERROR: Cannot select: t14: i1 = setcc t304, t144, setge:ch
  t304: i1 = truncate t302
    t302: i16,ch = load<(load (s8) from %ir.A, align 4), anyext from i8> t0, t2, undef:i32
      t2: i32,ch = CopyFromReg t0, Register:i32 %1
        t1: i32 = Register %1
      t4: i32 = undef
  t144: i1 = truncate t142
    t142: i16,ch = load<(load (s8) from %ir.A + 2, align 2, basealign 4), anyext from i8> t0, t21, undef:i32
      t21: i32 = add nuw t2, Constant:i32<2>
        t2: i32,ch = CopyFromReg t0, Register:i32 %1
          t1: i32 = Register %1
        t20: i32 = Constant<2>
      t4: 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: /home/peter/aflplusplus-isel/llvm-project/build-debug/bin/llc -mtriple=nvptx setcc.ll
1.      Running pass 'Function Pass Manager' on module 'setcc.ll'.
2.      Running pass 'NVPTX DAG->DAG Pattern Instruction Selection' on function '@f'
 #0 0x0000000003a45a1a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/Support/Unix/Signals.inc:569:11
 #1 0x0000000003a45bcb PrintStackTraceSignalHandler(void*) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/Support/Unix/Signals.inc:636:1
 #2 0x0000000003a44216 llvm::sys::RunSignalHandlers() /home/peter/aflplusplus-isel/llvm-project/llvm/lib/Support/Signals.cpp:103:5
 #3 0x0000000003a462f5 SignalHandler(int) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/Support/Unix/Signals.inc:407:1
 #4 0x00007fd7f16e2980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #5 0x00007fd7f05d2e87 raise /build/glibc-uZu3wS/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #6 0x00007fd7f05d47f1 abort /build/glibc-uZu3wS/glibc-2.27/stdlib/abort.c:81:0
 #7 0x000000000396ca74 llvm::report_fatal_error(llvm::Twine const&, bool) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/Support/ErrorHandling.cpp:125:5
 #8 0x00000000037bec8b /home/peter/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:3765:3
 #9 0x00000000037bc222 llvm::SelectionDAGISel::SelectCodeCommon(llvm::SDNode*, unsigned char const*, unsigned int) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:3667:9
#10 0x0000000001e0e299 llvm::NVPTXDAGToDAGISel::SelectCode(llvm::SDNode*) /home/peter/aflplusplus-isel/llvm-project/build-debug/lib/Target/NVPTX/NVPTXGenDAGISel.inc:86754:1
#11 0x0000000001e00944 llvm::NVPTXDAGToDAGISel::Select(llvm::SDNode*) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/Target/NVPTX/NVPTXISelDAGToDAG.cpp:505:1
#12 0x00000000037afdb9 llvm::SelectionDAGISel::DoInstructionSelection() /home/peter/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1153:5
#13 0x00000000037aee0a llvm::SelectionDAGISel::CodeGenAndEmitDAG() /home/peter/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:933:3
#14 0x00000000037ad7dd 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/peter/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:685:1
#15 0x00000000037ad27b llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1591:11
#16 0x00000000037aa81d llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:464:3
#17 0x0000000001e004e5 llvm::NVPTXDAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/Target/NVPTX/NVPTXISelDAGToDAG.cpp:46:3
#18 0x000000000281fadd llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:85:8
#19 0x0000000002ef9146 llvm::FPPassManager::runOnFunction(llvm::Function&) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1430:23
#20 0x0000000002efdf72 llvm::FPPassManager::runOnModule(llvm::Module&) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1476:16
#21 0x0000000002ef9a19 (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1545:23
#22 0x0000000002ef958d llvm::legacy::PassManagerImpl::run(llvm::Module&) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:535:16
#23 0x0000000002efe251 llvm::legacy::PassManager::run(llvm::Module&) /home/peter/aflplusplus-isel/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1672:3
#24 0x0000000000d1ad70 compileModule(char**, llvm::LLVMContext&) /home/peter/aflplusplus-isel/llvm-project/llvm/tools/llc/llc.cpp:737:41
#25 0x0000000000d190f2 main /home/peter/aflplusplus-isel/llvm-project/llvm/tools/llc/llc.cpp:418:13
#26 0x00007fd7f05b5c87 __libc_start_main /build/glibc-uZu3wS/glibc-2.27/csu/../csu/libc-start.c:344:0
#27 0x0000000000d188fa _start (/home/peter/aflplusplus-isel/llvm-project/build-debug/bin/llc+0xd188fa)
Aborted
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzNWdty4zYS_Rr5BWUVAd4f9CDJ1qyrPInL9iabvKhAEpS4oQgWAY7tfH26QVK82F7Ls844Ux6RAMHuc7ob3QAYyeRp8eteFCSWhzLLs2JH9F6QVOa5fMBWmYlYEJnCgETM2Jr89MvN_X9IxOM_RJGQuOJqL9R8Zl3MrOU9vBrVOxLzgkSCVKKsZFLHIiFpJQ_k-vqXr9QhsiI510JpVHrINJl5lvCZHXthFDrQaIQ1v7_J2ohLM9CG0DqhOpMF2YtKzOwl2WtdKriZsQ385fm3w3wnk0jmei6rHXT9Cf8vf1V26kbqy1A-qmv-TDMRoEiQbzJLyMyx0hkLZvbaZuSRZHRmX87YksyYC4pCMvNXzUurFao2t4REyC4SOQ5brehQFzYB7Lv-zewVKSuRKLi76GSCG8xdpxMa1-Z5LjngHgNeTzs6BmvC82xXEGcg5pIaOeJRVzzWIhcHUeixAKMN384oSXmuxPD1d7wdEOoNXl2bV7P4UBK1EyjcwGm5Xg7M2zxa45ORpcdtNrY8-xjL93ivGryFEtUrTP8UlcyKTGdgZrhvTWbI4K3nEKuTp7SsxHNDXb3He5XQJm5b3v7FiwE-aeKUJJe3tz_fon3WvCikJgr4xBo7NHXwkjVRoYSOY6Jty0H18MxcoXeHkzDed0jMiP41XdVFDBMe-1k3hjQtM8oDMfH-GMBAGKZdE8osUAHONZM_gHhWzUfcWWhaxRPEXDMoC9B42jIQGf7WBcxq0JTZA-0EH6J2m_Xa17J82oCQW7FrJcBdpjQ4z7yOCOhQBkihrRQjoBv-bKB2hsMaRJ210I4vWYs6Q2th63usBdcVYb3NzG3ElTjVhPR_2nBEnycJKeqH1u5rWSjNC92-Zq8ZBvDYeh_ig5O9gAqt4cge4jNwr3rsCooRuAjrD45oe2-uL5d3l0TVEVY0bsoglCpZaaLlpD7tMr2vozlUv7ZYtZdzqGz_xZnHNplStVBwA45JIMvEeZ0IU_9MxTX1F5OsaCvvnYYOktSH8liKrHlD5KaSu4ofCK92NWYpxAGW2ezlAQr6phRoWrbhaV7mtcL_5xlkgOeYojrLk_NEADVsZYUZEpPzg66yMocccFF8K_Vjkyfmed7goC2O27oozIqCK0ipzN-0RiQ32PGVF3yHQHwCXQeo8LnAUUdZzG-pslfkNQuTi-WXc_AkXECuBmoFuQIfV-2C4c6kNnRdo6jzJApo6r3fBsGM2RaxHq3un80dl1NOjL_AxvZSPanm5qbKCm08cI8uwel4HFTxh60E_YKDlz2T-CHccPXwHR7oYiWL4PeuLjG84O7fRfaIHTCfoR7PIVpAseuF8EtpT4dO6URxRCbYGxn_gqDLEVNgCgpb_gjAnu0h4B4vm-B1GPVeMj8Ewgi2wkXbxwLukMYlzi9q2WjgHqk9Qeqx1CVTU_4gvzuWPzaj04Lz08RPqSdYGFhku62EWXRsIUEZe7XSHwNv6znnsBOoH893Rd08KPUeIjiZKzmHlLyyHilKwdJxVOMO1VhuwkTgk4oDIdLlDkx9ICw-r3-v7Ye7Y5PNYdaxjTI84GY-x9aTSkSJKbBuaELHN4MGkMHViJ6bSMfkb_VIvAkSB2gTHknD9DQkOmmsYd4ySoKJEn_k8tCLue8MgrNJ_duUa55vRVXJapQV7h9wlxFj9WmzQiRl_sHhcYlqTfxBmuxCl7nj0A1GPPxIxEH0_4NYw2bxi8ACcUy4kJEnzStotLBs30Ncdo8rnOCKGWMD-07lDHtR-Rp2lpjkBza_u_jJbGGXzXoGow02pvGeV50jxk8-ar6-2xaehzO4nVqYt0d1iAoLpnA4sIUpfCDjXr5ijNfM8H3kxsuAhuM9LC4EPjRYuiuw7qg1uSnwfNfpsxNyoxNuVug4p3L7WF4jp71MCAF0YFpvuZY7JjSuWj5Pkyh8M3Av5GCRMlijfEwde28EUuoOChySsiekhLD4m6RatcsiuYQ1sdH4OXxC2-6TC9JxJnQSHzYupyWXFVdZvMpl_Mco-rIcdhzbDOhwqKqwnZg-SoTmWSupAPxbWaIGNRo6CAKz96pqc-TWnLLAjVmNNWc6xz4zqOn7h8FpSpr3KS73gsm0dKcuZ350osuXed57XY3cftzD9KX8M-arG9LBWh_pehO6PKBvR3hVFz8XX3m8h8VJx2xE99mzz-HreM54PvvTIuII9-0i8ll0T64tjjemOVqrsYCmfJS2JnBxWz0g-iLDv8-TL4BpWZmZGfSsRis9JtKQOsNt3uYG3-2OB34wn6tb-LkWOx4_DVB0086x8TCJ9R5i1oRLkvrsBC5fzXHHOPbarh_Cwzc7b6_nQac-4RRRBLyQxdNB1ooU_CBUaU47whbxP5Oc67gTJ7EpOTcYTqPcSGruB_KuDmWfNz6LjWu7E0_ZEzKCufRtMp9OhHo-GyU3NlqTWQmFRZnVfpUUxxDC3ZpZ4i_H6x38jLGWhRaPH1CENaxblGnGzW-L2bdxX-b0VZa5E8yhlTJy4Fnxd6h3aICGG5hsctARuXHgk-0WTzK2SvNKbzsspxx6xAoPe8zZS3NrHho55gTENp8prF69P2EfBCknjeL2SOmjjpjNkVOj4HjmtMSjGdF97eq-ap2JBfU86jmObbOzZGEnoR3yM53pXCxm7qopue7FyefE3RduPCw2Z9FndZUvvv883_Udyz3bL0Tq-z5sHi0rhk1xCBuqKE2SOBKh5zlhGp6ZT5kKMQPcs2zBLMasgPnMdhmlc48l3PZZ4sF-OWQ8mDmWAG_nc_PxW1a7s2phMIApFTzEVb_qH8KExFMO0cnntd7LanHBNV_LqqpLMO2ZAb0wiP8CFKSkXQ">