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

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

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </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/6jdcM1vjG

```
define i1 @f(i1* %A1, <32 x i1> %L) {
  %E1 = extractelement <32 x i1> %L, i1 false
  %E = extractelement <32 x i1> %L, i8 16
  %B = mul i1 %E1, %E
  ret i1 %B
}
```

```
LLVM ERROR: Cannot select: t96: i1 = mul t108, t121
  t108: i1 = truncate t100
    t100: i16,i16,i16,i16,ch = NVPTXISD::LoadV4<(dereferenceable invariant load (s32) from `i1 addrspace(101)* null`, addrspace 101)> t0, TargetExternalSymbol:i32'f_param_1', undef:i32, Constant:i32<0>
      t2: i32 = TargetExternalSymbol'f_param_1'
      t1: i32 = undef
      t3: i32 = Constant<0>
  t121: i1 = truncate t113
    t113: i16,i16,i16,i16,ch = NVPTXISD::LoadV4<(dereferenceable invariant load (s32) from `i1 addrspace(101)* null`, addrspace 101)> t0, t50, undef:i32, Constant:i32<0>
      t50: i32 = add TargetExternalSymbol:i32'f_param_1', Constant:i32<16>
        t2: i32 = TargetExternalSymbol'f_param_1'
        t49: i32 = Constant<16>
      t1: i32 = undef
      t3: i32 = Constant<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: /home/peter/aflplusplus-isel/llvm-project/build-debug/bin/llc -mtriple=nvptx mul.ll
1.      Running pass 'Function Pass Manager' on module 'mul.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 0x00007fa1db0d8980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #5 0x00007fa1d9fc8e87 raise /build/glibc-uZu3wS/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #6 0x00007fa1d9fca7f1 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 0x00007fa1d9fabc87 __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/eJzVWVtT4zgT_TXmRUVKku8PeQgJzFIFuxSw811eUrItJ5517JQsQ9hfv92yjS9kCmaGHXYp4otufU53q1uSozJ5mv9nKwsSl7t9lmfFhuitJGmZ5-Ujvu0zGUtSptAgkRZfkl8_39z_l0Qi_kMWCYmVqLaymhGLriy6uIe-Ub0hsShIJImSe1UmdSwTkqpyR66uPl8zh5SK5ELLSqPUXaaJ5VHpczv2wih04KUZrLn-r6zNcGkG4hBbN6jOyoJspZKWvSBbrfcVPFj8Av7z_GE325RJVOZ6VqoNFP0JP-9LEl-zhy-fhuOjuObfvCYSBEmSMWI5NLV4kDGLL4jF3QVD-pa9tDk5QAPLPsfiK4uHxPLPmu4Ei86hs70i8qCViLXM5U4W-mjPJQpKRV7JYfdv6B0Q5g26npmuuzo3BBCJwQwPXSMldVvXIrb81VFFHC1EA5Lz29vfblHpS1EUpSYVYIw1FujQw1vGnmFoRgOEoBlnHQRT1jfTqi5icAcsp10b0ryZVh4M8PIab01v446Xdyu0vb24KkXy2QFdgeEScI0UfkUsRZSDSYsHoTIBusyhFWggqGyOxjOuCRQBj0gSVe1FDJ4eMArKC9H4RZ3nqALg8dyAtNVgDG1q7oXaSH1-0FIVIr972oHzAaIMZfjpei-U2K2hi4-N6wL8rKtdkmVZVBqQtSX2Epif96oAZXCjCvAA5HxU1ETIsDMbdm5ED6vtYXUPZQTC2O-ozZg9tBmz_0020y79Lmu4dKgyGP_brP9CAChnLOEHLQ7dnfArVn0h68fd4xKiM_gDBmRs23a_uTpf3J2Tqo4wxAuTFyB2l0oTXU4C9ibT2zqaQTpoo3d7O4VQ_wWDC7_IqqqWFTwQAYkgK-K8TqRJCCYHmYyEEVPOGvF3GgpIUu_2KMUU0VlD6UaVG1AbAaXWGFwRB_jWxbbcgRNd7CWoGe4izfd5XeHvNIMg9xJTVGd5cppIoIZvWWGaxOR0p1W2zyEzrYqHvT5gKJyBPxoUrEVxWxeFybCiqkC6f9GqkNxgwbUoxAZh-ASKdpDwYDrAWzsS91ua_CujNWl6tfh0CmaCG4yq0XvIJRhQtdnzzkRuNFsjprMiDtCkv86tLG5TQg-0-7OF4womiLGVmcbVU9U83Kis0Eb796qZlX0jJR7XJciXAizsmQwGvoQJ9Du03_lJFsH1rt6ja8HT70V2wIJsA1OlmoGngGDXw_nAWE-HTelEcUQm2JsxfgGHyxFT8FBmCQSXnwHYszGVDvDyCV6HM--Y-sERRrBhygTvDLhDGu9xbjGKEcLtkdoTpB5PXTJV5U-yu0P9sRqdFpyfCpZENAnCgJL1WsFqtFRyDcHJ6Ksd_RB4a885hXVxfTjdFHVTsddb8OBkVpUzyB9n9MA4jIKZ5VmMOxQTpnEgA58oAYRIFzcw7MFg8Wn9_9p-vHt-5TPMEheV4QEPsxm-PVWJ3GP4qxuaUPBg0AAyuJuhZ8bTMZzTHok3QSL8FHJmVBqmb0Oik0YbppcREkyE-COThx5IcQbO2YT9dSq0yNdSqVKNosL9Iy65Y0wtbVSISsxv7-oe5yjW-B-Eyc51uTt23WDEw49kHEQ_DmIJW6dPEpPDc8CFiDx5vYSXFpbte4jL7nGFE1wx53yg3-k4w1IUvoRtFgb5gc7vVr-aDd2iWQCht8EuLd4K1RliXPNe8_WbdeF5OIPbqYVxe5SHmKSSh-FAFybxwRj35VeU8TU1fB-58RKg4dis1uDBYOnuwLqj1sSmwPNdp49OyI1NuNHQcd7K7X15jYx2nBAC6MC01nKpOyY0zlq-SJMofNVxV-VgkTJYo7xPHvtWD2TMHSQ4JGVPSElJxaukWrGLIjmH9bCR-DF8QtvugwvScSZ0Eh82NG8LLmeiyuKzvIz_GHlflmeVXmdAR0BWhb3CtCqRWmTtSAXgX5d7lFCNmg6cwGzWVG0OoJrjEngwqzHYgwzLTKOm7B8Gp0lp3oeY3Asm09Kdmpz70RtNvsjz3urVyOzPO5g-lX_EfHVDNljrI11vQlcE7HUPV3XxW3Et4i0sTjpmI7ov6j6Gr-M54_nsT5OII93Xk8hH0X1zbnG8Mc3RWo0HLBWjsDWBi5vqAdGjDP8-Sx4B07IyMzPoWY1WelymIXOG27yLG-zbHQ78ZD6Xt3C5khsRPw1QdNPOsfFUjPcW4nTCJUl9_gYu1-awY-x7bdFP4eGbnbfX82BTmwiGKAJRlMXTrqwrUoidbM8gwxbxP5Oc67gTI_EpOTcYTqPcjNQ8D8a73O37uPFRbFzbnVjKnpCR3GWvk_lwIszz-Si48dGajCYMFmW0_UYnn10Id2tmib8Yr3fwK82yLLQ8vEMS1rBuqcxr3FxbzL6N-zKnz7LcnWAOacrJTmTF3yHeYfgNiQ1UNjnoEFEc-GS9xpOMdaWF0usOy1sOPeIKD3vM2UvzaCrNOOYExHYw69JevD9hHwSpII3g9kjpvY6XzZFTI-D5zGmBRzMymXy0O5Fz5nnMc2zHZyfJ3E5COxQnOtO5nFvuWZNy3dWbz4m7773mTNp8ZTypVT7__sN813eoc7KdJ2nEAypdR1IuHJ_awqaua8eM2bEbO95JLiKZVwja4ryQj8QMAc8A_ySbc8o5DbjPbdt32YzZVAondf0khlGDxHKoBOvj0fnDDr8In6i5gQSqraASdwFVXwkTFE89jI5wfFHrbanmK6HFslSq3oOqTwyAuSHwF6pWgws">