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

    <tr>
        <th>Summary</th>
        <td>
            llvm.fminnum.v16f16 causes: cannot select v16f16 = X86ISD::FMIN
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    After upgrading to LLVM-15, we have run into this issue:
The vectorizer will now generate the intrinsic `llvm.minnum.v16f16` in some cases and this causes the following compiler crash:
```
LVM ERROR: Cannot select: 0x5621390e1aa8: v8f16 = X86ISD::FMIN 0x5621390e1838, 0x5621390e1768
  0x5621390e1838: v8f16,ch = CopyFromReg 0x5621390616e8, Register:v8f16 %1
    0x5621390e17d0: v8f16 = Register %1
  0x5621390e1768: v8f16,ch = CopyFromReg 0x5621390616e8, Register:v8f16 %0
    0x5621390e1700: v8f16 = Register %0
In function: test
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /opt/compiler-explorer/clang-15.0.0/bin/llc -o /app/output.s -x86-asm-syntax=intel -O3 <source>
1.      Running pass 'Function Pass Manager' on module '<source>'.
2.      Running pass 'X86 DAG->DAG Instruction Selection' on function '@test'
 #0 0x00005621350ae594 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
 #1 0x00005621350abdf4 SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f16ac5ab420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #3 0x00007f16ac07800b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
 #4 0x00007f16ac057859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
 #5 0x00005621328f3655 llvm::DisplayGraph(llvm::StringRef, bool, llvm::GraphProgram::Name) (.cold) GraphWriter.cpp:0:0
 #6 0x0000562134e85480 llvm::SelectionDAGISel::CannotYetSelect(llvm::SDNode*) (/opt/compiler-explorer/clang-15.0.0/bin/llc+0x2e75480)
 #7 0x0000562134e8aa1a llvm::SelectionDAGISel::SelectCodeCommon(llvm::SDNode*, unsigned char const*, unsigned int) (/opt/compiler-explorer/clang-15.0.0/bin/llc+0x2e7aa1a)
 #8 0x00005621339e45bf (anonymous namespace)::X86DAGToDAGISel::Select(llvm::SDNode*) X86ISelDAGToDAG.cpp:0:0
 #9 0x0000562134e83300 llvm::SelectionDAGISel::DoInstructionSelection() (/opt/compiler-explorer/clang-15.0.0/bin/llc+0x2e73300)
#10 0x0000562134e8ede9 llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/opt/compiler-explorer/clang-15.0.0/bin/llc+0x2e7ede9)
#11 0x0000562134e91aa1 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/opt/compiler-explorer/clang-15.0.0/bin/llc+0x2e81aa1)
#12 0x0000562134e943a8 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (.part.0) SelectionDAGISel.cpp:0:0
#13 0x00005621339ee605 (anonymous namespace)::X86DAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) X86ISelDAGToDAG.cpp:0:0
#14 0x00005621343a4449 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#15 0x0000562134834c10 llvm::FPPassManager::runOnFunction(llvm::Function&) (/opt/compiler-explorer/clang-15.0.0/bin/llc+0x2824c10)
#16 0x0000562134834d89 llvm::FPPassManager::runOnModule(llvm::Module&) (/opt/compiler-explorer/clang-15.0.0/bin/llc+0x2824d89)
#17 0x0000562134835970 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/opt/compiler-explorer/clang-15.0.0/bin/llc+0x2825970)
#18 0x00005621329b160b compileModule(char**, llvm::LLVMContext&) llc.cpp:0:0
#19 0x00005621329021c2 main (/opt/compiler-explorer/clang-15.0.0/bin/llc+0x8f21c2)
#20 0x00007f16ac059083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#21 0x00005621329a98fe _start (/opt/compiler-explorer/clang-15.0.0/bin/llc+0x9998fe)
```

Here's a small repro:
```llvm
define <8 x half> @test(<8 x half> %x, <8 x half> %y) {
  %1 = call <8 x half> @llvm.minnum.v16f16(<8 x half> %x, <8 x half> %y)
  ret <8 x half> %1
}

declare <8 x half> @llvm.minnum.v16f16(<8 x half> %x, <8 x half> %y)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0mN1u2zoSx5-GviFsUNQXdeELx45zAjRtkBRnu1cBJY1lbilSIKnE2adfULIdyfE2aZMDtLHNj__8ODMUNeTWikoBzFF8geLVhLduq81ctVKW3PGaN5Ncl8_zxcaBwW1TGV4KVWGn8Zcvf99MgxjRJX4CvOWPgE2rsFBOY7cVFgtrW0DhApEVIovvW8CPUDhtxH_B4CchJVb6CVegwHAH2G3BTzZCWVFglBApH-tZLZRq69ljkGyCBCUEC4WtrgEX3ILFXJW9sYK3_rcX2Wgp9ZOnLHTdCAkGF4bb7REFJWT_r_v55e8bfHl39-0OhQu85Epphy1IKJxvILs4oUGYEQg4Z77lkW2CBKNwhX-w5Pp-5XXDxfrm-utwMAuZd82gJU1YbxCfjjuIIrostp3yUjfPa6PrO6heBidBAp3oHVTCOjAoXOxhaBwctEfqaUnGyIepoyknkJ-BQ87jkF_g7KdcK7xpVeGEVn6sA-v6jtsvl4v7S2zbvBYOc5y3FTbQaON8Om6da6wPBV0juq6E27b5rNA1omufSPuPaWP0f3xk6bpLT4vouksioQrZln0WdtmCc178dIYXMOvN3zte_MRlWzfHRCIzRLJboyvDa8xN1dagnIfAiK51460cUnAKu0ZqA8a3Sa6qaRDPyIwgus6F6ugKPNV-Im8aP711TetmFk93LJlyW0_ts3J8h8KVUA4knn4LMQqXVremABRe9kiBR7prlfL533BrMaLpeu9PfOsbbrjilQdJsVa41mUrwY8aidF0v2x6TvAHS_BqcTVF4eVqcYWvlXWm7U3cdzvHB6_XP8SysxCRLpw03WcHoiHBZEcIIV2OxIRDnEX41gjlOod_9xG4F5Xi8i-uSum52aMWJaILRDPcd9lZ0fiwkO7_UTs40c7LTYRPxYRybwrRvVC6CRJexDyPKMEPDwas0wYejMOIMh9EkSO63rHkIYmmUqh2N61U23c0bmuAlzOrfdQvyC6IIkoQzV7MhCMzJGWE5NhwYeEd-oVXTjrlKCQkHylHY-U4ZXGGea7fRT5QppTF2Ug5HvqYsk2YxDHudlz3WFwJ20j-fGV4s0WUvXTc-yd9dQcb_wTJtZb-86W7m7DfWn3LV16DDxSibFZoWfrv3ah_GeHAnA9cMqSLgMURIwMrx2RdLa6u70H2rf0Z8G9wffcYe_VVl7BPvt51v7_Re1dC6mlGzkxPcDkP-Ju4fetSl7DUde033nneJW5Vd9qXuNhygwut_F4c9-x3w0dX5sFHK2PDlYUZRHG-8Va40uq51q3FitdgG174IPfsP1iyWlx912dW-_9j0p3JIA8Tz6dFduLnMCRvp8VKD55zg8cc-wyHeYKjw_yji5wgQgnZ25mrS7gCtVDlZS3canH1SXTe-IguGNNlAefBOxN1IeUFt6K4kLr4aUeBPJ5T-9RMPoGdebQROz1hj0LO3mQ3rfqmbnixFQoOmCP2V30H-FnDjfNoGT6Vfp2cni882SqQkPiPtsofMr-5gzxkNHJiyKMoGqbnibJ_7xgwnYX5pefO6J3nGh1HEQujIhju7PWtn3p4A_ptog8kIqMeZZSIySlrybJ3sN50b2zjQO6bPoezZOPNnp5wxlk69KmEihfP_fcB8XXdvOThP0frYUa0o5OGZnmQkPxQCR5d5w_A7sBYjF87fFG71MrB7vD4kbI4n2nZ2A6hQUFxzYX62JLYxgsNV0TJyctbRliIHx78m9mDddy4h4HZ977IRYSFIyvBeD08YxvAvf7HVpRlXurF1rj67v_-BQYQTS3m2NZcSl_YGf26Yu8i1TWVsBEKfAXE8A5vudyg8BIfKwx22kHjnQ_16-bnLgvTi0PB6gvjrjYtPMdr_TPXEr9p7WDJgDszYl-Vo3Q1dFAJheTm3Ho_i-fo40k5D8sszPgE5kGSZlGWZGE82c45TaIgSnlcFtxnCk1SHsSMckYDVhKYiDklNCQhpUEUx2E8CxmnQcrKDS1JApChiEDNhZx10NpUk64KnydBQuOJ5DlI211FUargaX-DRCmKVxMz7-r3vK2sX7Swzr6oOOEkdANmm5Er9vdCviQvhjc7eN997hZn0ho5__PrhG4t_wsAAP__Asagdg">