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

    <tr>
        <th>Summary</th>
        <td>
            fatal error: error in backend: Cannot select: v8f16,ch
        </td>
    </tr>

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

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

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

<pre>
    This crash was produced on a Intel Icelake-Client Laptop on Windows 10 with clang-16 downloaded from the Github releases, as well as in an Ubuntu 22.04 VM on the same Laptop with a freshly installed clang-15 from apt. The crash only happens at `-O2` or above.

Attached is the reduced bugpoint output: [bugpoint_output.zip](https://github.com/llvm/llvm-project/files/11651970/bugpoint_output.zip)
As well as the files mentioned in the console output: [preprocessed.zip](https://github.com/llvm/llvm-project/files/11651995/preprocessed.zip)

Code:

 struct Color {
      float channels[4];
    };
    
 template<int Channels>
    struct Image {
      __fp16 *data;
 int     width;
    
      __fp16& address_of(int x, int y, int c) const {
        return data[c + x * Channels + y * width];
      }
 
      Color get_value(int x, int y) const {
        Color result;
 result.channels[3] = 1.0f;
        for (int c = 0; c < Channels; ++c) {
          result.channels[c] = (float)address_of(x, y, c);
 }
        return result;
      }
    
      void set_value(int x, int y, Color value) const {
        for (int c = 0; c < Channels; ++c) {
          address_of(x, y, c) = (__fp16)value.channels[c];
 }
      }
    };
    
    void test(Image<4>& dst, const Image<3>& src) {
      for (int x = 0; x < dst.width; ++x) {
 dst.set_value(x, 0, src.get_value(x, 0));
      }
    }
    
 Image<3>& get_image3();
    Image<4>& get_image4();
    
    int main() {
      test(get_image4(), get_image3());
 }

Command:
`clang++ -mf16c -O3 -o main.obj -c main.cpp`

Linux Console output:

    fatal error: error in backend: Cannot select: 0x563194587018: v8f16,ch = X86ISD::VBROADCAST_LOAD<(load (s16) from %ir.88 + 24, !tbaa !14)> 0x5631943d20c8, 0x5631945967b0
      0x5631945967b0: i64 = add 0x563194588818, Constant:i64<24>
        0x563194588818: i64,ch = CopyFromReg 0x5631943d20c8, Register:i64 %16
          0x563194594d40: i64 = Register %16
        0x56319456d8d8: i64 = Constant<24>
    In function: _Z4testR5ImageILi4EERKS_ILi3EE
    PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
    Stack dump:
 0.     Program arguments: clang++-15 -mf16c -O3 -o main.obj -c main.cpp
 1.     <eof> parser at end of file
    2.  Code generation
    3.  Running pass 'Function Pass Manager' on module 'main.cpp'.
    4.  Running pass 'X86 DAG->DAG Instruction Selection' on function '@_Z4testR5ImageILi4EERKS_ILi3EE'
    Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
 /usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1(_ZN4llvm3sys15PrintStackTraceERNS_11raw_ostreamEi+0x31)[0x7eff50b043b1]
 /usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1(_ZN4llvm3sys17RunSignalHandlersEv+0xee)[0x7eff50b020fe]
 /usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1(_ZN4llvm3sys15CleanupOnSignalEm+0x101)[0x7eff50b03771]
 /usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1(+0xe2745a)[0x7eff50a2745a]
 /usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1(+0xe273fb)[0x7eff50a273fb]
 /usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1(_ZN4llvm3sys7Process4ExitEib+0x27)[0x7eff50afe5c7]
 clang++-15(+0x14012)[0x563192536012]
 /usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1(_ZN4llvm18report_fatal_errorERKNS_5TwineEb+0x109)[0x7eff50a39339]
 /usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1(+0x174ec74)[0x7eff5134ec74]
 /usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1(_ZN4llvm16SelectionDAGISel16SelectCodeCommonEPNS_6SDNodeEPKhj+0x3db8)[0x7eff5134e138]
 /usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1(+0x38dfb38)[0x7eff534dfb38]
 /usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1(_ZN4llvm16SelectionDAGISel22DoInstructionSelectionEv+0x19f)[0x7eff51345b6f]
 /usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1(_ZN4llvm16SelectionDAGISel17CodeGenAndEmitDAGEv+0x5c4)[0x7eff51345244]
 /usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1(_ZN4llvm16SelectionDAGISel20SelectAllBasicBlocksERKNS_8FunctionE+0x1771)[0x7eff51344631]
 /usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1(_ZN4llvm16SelectionDAGISel20runOnMachineFunctionERNS_15MachineFunctionE+0x68b)[0x7eff5134219b]
 /usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1(+0x38d6ebd)[0x7eff534d6ebd]
 /usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1(_ZN4llvm19MachineFunctionPass13runOnFunctionERNS_8FunctionE+0x1fc)[0x7eff50e93efc]
 /usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1(_ZN4llvm13FPPassManager13runOnFunctionERNS_8FunctionE+0x3b2)[0x7eff50c40c92]
 /usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1(_ZN4llvm13FPPassManager11runOnModuleERNS_6ModuleE+0x33)[0x7eff50c48253]
 /usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1(_ZN4llvm6legacy15PassManagerImpl3runERNS_6ModuleE+0x936)[0x7eff50c41836]
 /usr/lib/llvm-15/bin/../lib/libclang-cpp.so.15(_ZN5clang17EmitBackendOutputERNS_17DiagnosticsEngineERKNS_19HeaderSearchOptionsERKNS_14CodeGenOptionsERKNS_13TargetOptionsERKNS_11LangOptionsEN4llvm9StringRefEPNSE_6ModuleENS_13BackendActionESt10unique_ptrINSE_17raw_pwrite_streamESt14default_deleteISK_EE+0x1ca5)[0x7eff58522955]
 /usr/lib/llvm-15/bin/../lib/libclang-cpp.so.15(+0x1c828b1)[0x7eff588828b1]
 /usr/lib/llvm-15/bin/../lib/libclang-cpp.so.15(_ZN5clang8ParseASTERNS_4SemaEbb+0x35b)[0x7eff5768ce9b]
 /usr/lib/llvm-15/bin/../lib/libclang-cpp.so.15(_ZN5clang13CodeGenAction13ExecuteActionEv+0xd5)[0x7eff5887e925]
 /usr/lib/llvm-15/bin/../lib/libclang-cpp.so.15(_ZN5clang14FrontendAction7ExecuteEv+0x67)[0x7eff592b4ea7]
 /usr/lib/llvm-15/bin/../lib/libclang-cpp.so.15(_ZN5clang16CompilerInstance13ExecuteActionERNS_14FrontendActionE+0x336)[0x7eff59227fb6]
 /usr/lib/llvm-15/bin/../lib/libclang-cpp.so.15(_ZN5clang25ExecuteCompilerInvocationEPNS_16CompilerInstanceE+0x29a)[0x7eff59332e4a]
 clang++-15(_Z8cc1_mainN4llvm8ArrayRefIPKcEES2_Pv+0x990)[0x5631925359e0]
 clang++-15(+0x11bab)[0x563192533bab]
 /usr/lib/llvm-15/bin/../lib/libclang-cpp.so.15(+0x228bbd2)[0x7eff58e8bbd2]
 /usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1(_ZN4llvm20CrashRecoveryContext9RunSafelyENS_12function_refIFvvEEE+0xde)[0x7eff50a273de]
 /usr/lib/llvm-15/bin/../lib/libclang-cpp.so.15(_ZNK5clang6driver10CC1Command7ExecuteEN4llvm8ArrayRefINS2_8OptionalINS2_9StringRefEEEEEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPb+0x138)[0x7eff58e8b698]
 /usr/lib/llvm-15/bin/../lib/libclang
 -cpp.so.15(_ZNK5clang6driver11Compilation14ExecuteCommandERKNS0_7CommandERPS3_b+0x44a)[0x7eff58e4da8a]
 /usr/lib/llvm-15/bin/../lib/libclang-cpp.so.15(_ZNK5clang6driver11Compilation11ExecuteJobsERKNS0_7JobListERN4llvm15SmallVectorImplISt4pairIiPKNS0_7CommandEEEEb+0x8e)[0x7eff58e4dcde]
 /usr/lib/llvm-15/bin/../lib/libclang-cpp.so.15(_ZN5clang6driver6Driver18ExecuteCompilationERNS0_11CompilationERN4llvm15SmallVectorImplISt4pairIiPKNS0_7CommandEEEE+0x39f)[0x7eff58e6ab1f]
 clang++-15(_Z10clang_mainiPPc+0x2c11)[0x563192533311]
 /lib/x86_64-linux-gnu/libc.so.6(+0x29d90)[0x7eff4f429d90]
 /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x80)[0x7eff4f429e40]
 clang++-15(_start+0x25)[0x5631925303b5]
    clang: error: clang frontend command failed with exit code 70 (use -v to see invocation)
    Ubuntu clang version 15.0.7
    Target: x86_64-pc-linux-gnu
    Thread model: posix
    InstalledDir: /usr/bin
    clang: note: diagnostic msg: 
 ********************
    
    PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:

    Preprocessed source(s) and associated run script(s) are located at:
    clang: note: diagnostic msg: /tmp/main-cdfc4c.cpp
    clang: note: diagnostic msg: /tmp/main-cdfc4c.sh
    clang: note: diagnostic msg: 
    
 ********************
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0Wl1z6yjS_jXKDRWXQN8XufCHfI735CSuODu779yoEEI2MzLoBeQ4--u3APlL8ZyZzfikUrbUAvrpp5umEcZKsTWn9MGLJl40u8Od3gj58A03oq6bu1JU7w-vG6YAkVhtwBtWoJWi6gitgOAAgwXXtAELQhv8O72fNoxyDR5xq0VrGvyL8Uq8KQB98Mb0BpAG8_U9jEEl3ngjcEUrUEuxBXpDwRemN10JJG0oVlR5aAqwAm-0acw34wBz8M-y47oDCI38EPzy3egwXRXe0oNaqwiDWlK1ad4B40rjpqHVQXnkNOJWj8DrhvamCd68gw1uW8oVwBp4sX__jLzYB0ICXIodHXn-zPPH7nOsNSYbWgGmLABJHSllt24F4xqITred9oIx8KLJQVo46eg_rPWimYfSjdat8oKxh-Yemq8tASMith6aN83u8HXfSvEbJdpD85o1hpk5hHEEs8T30Pza4CjrYZ74Myhtb7ClXDPBDXjHHhFciYZeYm4lbaUgVCla3QxwFnlo_mHkA1r3ORUVNRrOREBp2RENpqIREnjJpBfbv7oRWAOywZzTRnnRJDRQg7M2XjK4d1eabtsGa-oFU-Ox6WGEID817RUvtnhNh4qLom5hDDw0rrDGJw1mMPP3xiq9uab4rLeHYoCrSlKlClF7KDWd9yb0zcX74YJ4KLNu0kMQAEiqO8mBxRBNCPDQBOwNqqNFVvRuRQ7TgB_HkLs9lzq611QXO9x09Aq6PwTlukqqukafdLn70ZmvAi-aAS-YATjy6wEoAGrjbaeV2Fa-F0zs5fTMXRNjn4cmlqQPSMAVreSg1UOpDR8PZRdesDZa9s2gJ1wnni7JHxo6IHXg-p1gFVA_oHXa89c__0OWb8PPDyw_kHQI1swiGlL5h_xcMnB9Fh740FRpD6V2pnnBNDTTEMWgMtJpT8DhYdA_VPKaTWes7E-s7C0rldKjw7zsadlfDmFanPvGEuKbDyXJaH3lSXYRItcNH1o9tMSMy4ws8FA6HG_IybFxeKXx6coQsMWMu0ZDlnq-P4yFph_BXJ0Ch2y93WJenRJ27Nt11nEL7rc1jAm4fw7AvbBoRqL8DdwTd03a1ov98_EeGe_2YDpckS5WA-NjrHEDqJRCmvXKXpjlrMTkd2rhgCnmXGigaGNWomAM_H0UBzALozTxYWoku7Q2UT0lGxsn_07jxWpmtAXjXyYvz-PZdLx6LR6fxzMvmHooNRWLCS1l54KrIzwUMTlKU5tkUWj48xDUJcbmG4aWvPyoPKiQT1IbOQc4WZyU_rlrBk-CMWBxaBHiqjozI01h6pKFqXG4MZLFoRdMUXixiF2M6Xq5MU-mT0X7Ppdi-0LXV6C-0DVTmkqnwJgM42EWOYEOq_AC9KH3tX7HXnGVVul5r5NRQ3MWHNQdJ6aGMR2KX0MTyy-RnSaLRxbm-cu3VbF4ZEF-1m35mI9XOVBduWUaYFOqAUlbITXQAvzPhQ1TqrOVDcDcVFKk6SrqyilbUJpI1BITagg8L3mAEp10YtMTKyUIw5pWQHYcKCJZq0cn2CuNye-g6rbtcRoAf-T52VKKtcRbgOW6MyWdQQ_O5p6pdP_C9HMjQjOiF0ypqE20tlgqKk0dTHkFRG0rxxMmZFqbOg2sKacSW1ccnwbm6UvHOeNr0GJl6o9k3nsMLI3gO-Z4TaWHElPBb0XVNdS0OqJCyRkF4bUB_53GYDb-cu8F-Wz8BSy4K9WMipWd8gaTG_8QLaabF_p_EjAouUa-3VaITgP1vi1FAzjeUoMjpVx1koJ30YEN3lFgw8Q1Yv-hNim9i06C5fj1q9lLKKptlFC-Y1Jw4zmww9JsOB4ff_lerP7v--T5cfFr_lKYLmYHogVwmwotANM2oRwiwUPzTkkTnaw8xCg0RXZp8v58NDo9YqUZ_x5GIyVG0Czqvz6FpkOg3hWMlpJxbe19NVGbvzytCgglfiuE0pLibc48NPH3ATQAoom_T2hdR37ph0EJTRVwY0TJS8dXbM1x8xXzqqFS5TuLgNIhAuTX9CcgiKYNxbxrn3sc-dbqh_4HCoIkuREFzkKUhBG-VIKd7KZKgrr8oMTIbk5lsnTZL8z3TOemw8Tfo2SgvKYRSU7KL3PZATYMfYgOHe3igaIgNrKbooapWxsKW2kUtsDIX749rYro9Y1xmpd9LGQDI4IsCLIbugkmISVJeKEFBk52W4vjY96cjb8sVrQ5SEymN3We4PnyaVXEq9mTqGi-_Lb5zaWEqkw_4INBekMWgrSqy-BSSxA62U9mAaGZOFtdjo_7bASzemh7VMb1T_dNYrzyhfIxr_It07Pxlx5QRD4ES4TCnx4syHeScdNMsGJk0gjyu3JTJj2s_nkf0gkcQgzj4MaLyDWIsuPP_DsmG8bpEZNd6aKh1CKN03IIFMHsRgnyENgxLathYFvZbenIBhaaQgwGlpELKobOqsllhqNZQGtyY3DBfGnw9HXhX4AVlOgSFgl9kt16ERjAgi5-bLlqQcX9tYMUDBGlKApuiyhu6BqTdxidwVps28YQ9hFRFsRDSDAN4k9Ccu_PSdtaUJFDFVkpTEwOmrjN97PdtLtplcwYXnOhNCMq52uzcNqMALOvFFdUriiWZPPcGsf2yQKGfWa7lAavWK6pvhTCR8zXB5FjKFtpyfj6hdZmscqPhNgxeoRjF0grDf2Os__vaNFquTCtYWIq3vZNMk2Lvu5daRhWtMZdo4uKNlTTxepbkffTg-DoguM0QiiLoptx3GtJUVpeJs00dbKbOzNdmt3fePVqXRiu6BbnpSt3gugyHyZxSuin8-GPAio4LG_WVTDI95R0mo7Pl95qwHya0AzdjvkTmHAuBdfHwEl6MD2M-LKOzVAZUpz8BBjxVGxb1lC5sK9GCB3SYqfcAOwhN8UDkCipy5-QCVDUQzph3Qli3xDY4vGjEQ4gyi73O1kQIBriH-wGil9TQmCxxYy7mZ-OpcTvL7ReLL-RPF-hYukclGX-cMMQZdT_050GLHE57BgY2U3nNkJpWVaXq1lKneymawfypxKrzQslYkfl-9REyV5nZpuNa9q82xSJDi9LCknrxXy3y_tEV9GPW8Xqs7vuqwH0zUVQXEm2oxL60yns3y4fJ9zQ0U8rVKQu_-PG3p2lf_O3fFrppCjIfg8hRKUpTE1aZ3y9ICsNIdlgWWiJmVYLkq_wgphO_d5usN8wTomzz-43XIy5jn9iOXRTxE4aGJ7mk6HCLnx-kRxvl6ugcHjDEA_whhVOP_vK4K-46AIo7IH-Q5TqgPIfonxkytQCrp6KVlvcNL9QooUtWxYrHbaYyQVbXpqV5_0GO6UfbCK3DbsLk-KZsyy9yGL4kF394sLmT9nl8vFg15jSGJew_mG6g-5kxWY8tlwSlz0IhB9yVAAvywJHwD6Nizi8bxjv9vdr3vWcGC7iYzLKqlOyNMjCOnSy_3m8ojB3hdJY6sKdQxl_fhydhj9KxW4ABy4aWuoH5dl6D0Df_XAidHwjDup-TQTEOQLUmDW0cj8WoXumAREVBYkPPJR2ioL7HdACKEoBOy5gxx8qGE39L1Hc8DsqFRMcwGjkj87eH7ua1cDoyWrJGV-nZhtJcQW2oqKNadwKxfbnBx79T1hmzJp0jHkT4x9N50JT810dS2-wVfbJ0YPjz_9fOWjsT1bGr6_j6Vfw-jUH8-fHx-d_LZ6-gPniMV-B12crnvzzC3jJl88vr1eO9JbXzkhS5aHsj89Jjg0kBY3xEq0APp0X_lVa0FxvWw_NTZTek6omITk7G_kbg6jNZ_xzIvfveOquegiqLMjwHX2AcRplcRj72d3mwcdZlGZZWYdZBiNUxUmE4zgO4xCXQVqTO_aAfBT4sR9BGPh-PKrLpKxJBrMQJbisfC_06RazZmSS30jI9Z09DXuIAwjDuwaXtFH2J2UIcfoG7EMPmXLmTj7YFF12a-WFfsOUVqdRNNMNffjM2e7pJPeuk83D50_zrAn_DQAA__9CloTf">