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

    <tr>
        <th>Summary</th>
        <td>
            Clang 18.1.0 (bba39443eb91) crashes when combining BF16 subvectors on AVX512BF16
        </td>
    </tr>

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

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

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

<pre>
    Here is the error that occurs in Clang 18.1.0 (++20240221023121+bba39443eb91-1~exp1~20240221023233.52) when an 128-bit BF16 vector resulting from a _mm256_cvtneps_pbh operation is extended to a 512-bit vector:
```
fatal error: error in backend: Cannot select: 0x55b077581770: v32bf16 = insert_subvector undef:v32bf16, 0x55b0797a8920, Constant:i64<0>, jep_google_highway/hwy/ops/x86_512-inl.h:3789:31 @[ jep_google_highway/hwy/tests/dup128_vec_test.cc:112:12 @[ jep_google_highway/hwy/tests/dup128_vec_test.cc:181:5 ] ]
 0x55b0767bbb30: v32bf16 = undef
  0x55b0797a8920: v8bf16 = llvm.x86.vcvtneps2bf16256 TargetConstant:i64<13501>, 0x55b0772e8670, jep_google_highway/hwy/ops/x86_256-inl.h:6390:45 @[ jep_google_highway/hwy/tests/dup128_vec_test.cc:103:29 @[ jep_google_highway/hwy/tests/dup128_vec_test.cc:181:5 ] ]
 0x55b07807f7d0: i64 = TargetConstant<13501>
    0x55b0772e8670: v8f32,ch = load<(load (s256) from constant-pool)> 0x55b0815e7dd0, 0x55b07aaa9630, undef:i64, jep_google_highway/hwy/ops/x86_256-inl.h:6390:45 @[ jep_google_highway/hwy/tests/dup128_vec_test.cc:103:29 @[ jep_google_highway/hwy/tests/dup128_vec_test.cc:181:5 ] ]
 0x55b07aaa9630: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<<8 x float> <float -1.600000e+01, float -1.500000e+01, float -1.400000e+01, float -1.300000e+01, float -1.200000e+01, float -1.100000e+01, float -1.000000e+01, float -9.000000e+00>> 0
        0x55b07aa9a320: i64 = TargetConstantPool<<8 x float> <float -1.600000e+01, float -1.500000e+01, float -1.400000e+01, float -1.300000e+01, float -1.200000e+01, float -1.100000e+01, float -1.000000e+01, float -9.000000e+00>> 0
 0x55b0775743c0: i64 = undef
  0x55b076ffdee0: i64 = Constant<0>
In function: _ZN3hwy11N_AVX3_ZEN423TestDup128VecFromValuesclINS_10bfloat16_tENS0_4SimdIS3_Lm32ELi0EEEEEvT_T0_
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: /usr/bin/clang++-18 -DHWY_STATIC_DEFINE -DTOOLCHAIN_MISS_ASM_HWCAP_H -I/home/jplatts/jepprojects/hwy_bf16_avx3_zen4_021724/jep_google_highway -isystem /home/jplatts/jepprojects/hwy_bf16_avx3_zen4_021724/hwy_clang18_zen4_build/googletest-src/googletest/include -isystem /home/jplatts/jepprojects/hwy_bf16_avx3_zen4_021724/hwy_clang18_zen4_build/googletest-src/googletest -march=znver4 -DHWY_DISABLED_TARGETS=6917529027641114559 -DHWY_WANT_AVX3_ZEN4=1 -DHWY_COMPILE_ONLY_STATIC=1 -O2 -g -DNDEBUG -fPIE -fvisibility=hidden -fvisibility-inlines-hidden -Wno-builtin-macro-redefined -D__DATE__=\"redacted\" -D__TIMESTAMP__=\"redacted\" -D__TIME__=\"redacted\" -fmerge-all-constants -Wall -Wextra -Wconversion -Wsign-conversion -Wvla -Wnon-virtual-dtor -Wfloat-overflow-conversion -Wfloat-zero-conversion -Wfor-loop-analysis -Wgnu-redeclared-enum -Winfinite-recursion -Wself-assign -Wstring-conversion -Wtautological-overlap-compare -Wthread-safety-analysis -Wundefined-func-template -fno-cxx-exceptions -fno-slp-vectorize -fno-vectorize -fdiagnostics-show-option -fcolor-diagnostics -Wc++2a-extensions -fmath-errno -fno-exceptions -Wno-psabi -Werror -DHWY_IS_TEST=1 -std=c++17 -MD -MT CMakeFiles/dup128_vec_test.dir/hwy/tests/dup128_vec_test.cc.o -MF CMakeFiles/dup128_vec_test.dir/hwy/tests/dup128_vec_test.cc.o.d -o CMakeFiles/dup128_vec_test.dir/hwy/tests/dup128_vec_test.cc.o -c /home/jplatts/jepprojects/hwy_bf16_avx3_zen4_021724/jep_google_highway/hwy/tests/dup128_vec_test.cc
1.      <eof> parser at end of file
2.      Code generation
3.      Running pass 'Function Pass Manager' on module '/home/jplatts/jepprojects/hwy_bf16_avx3_zen4_021724/jep_google_highway/hwy/tests/dup128_vec_test.cc'.
4.      Running pass 'X86 DAG->DAG Instruction Selection' on function '@_ZN3hwy11N_AVX3_ZEN423TestDup128VecFromValuesclINS_10bfloat16_tENS0_4SimdIS3_Lm32ELi0EEEEEvT_T0_'
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):
0 libLLVM-18.so.1    0x00007f396ed866d6 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 54
1 libLLVM-18.so.1    0x00007f396ed84690 llvm::sys::RunSignalHandlers() + 80
2  libLLVM-18.so.1    0x00007f396ecd60ee
3  libLLVM-18.so.1 0x00007f396ecd60ab
4  libLLVM-18.so.1    0x00007f396ed80f47 llvm::sys::Process::Exit(int, bool) + 39
5  clang++-18 0x000055b075544143
6  libLLVM-18.so.1    0x00007f396ece3932 llvm::report_fatal_error(llvm::Twine const&, bool) + 274
7 libLLVM-18.so.1    0x00007f396f5e59b0 llvm::SelectionDAGISel::isOrEquivalentToAdd(llvm::SDNode const*) const + 0
8  libLLVM-18.so.1    0x00007f396f5e4e38 llvm::SelectionDAGISel::SelectCodeCommon(llvm::SDNode*, unsigned char const*, unsigned int) + 16168
9  libLLVM-18.so.1    0x00007f3971a67313
10 libLLVM-18.so.1    0x00007f396f5dc5df llvm::SelectionDAGISel::DoInstructionSelection() + 431
11 libLLVM-18.so.1 0x00007f396f5dbcc1 llvm::SelectionDAGISel::CodeGenAndEmitDAG() + 1441
12 libLLVM-18.so.1    0x00007f396f5dade2 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) + 4354
13 libLLVM-18.so.1    0x00007f396f5d8f9e llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) + 1726
14 libLLVM-18.so.1    0x00007f3971a5d11f
15 libLLVM-18.so.1 0x00007f396f146e34 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) + 852
16 libLLVM-18.so.1    0x00007f396eeccdff llvm::FPPassManager::runOnFunction(llvm::Function&) + 687
17 libLLVM-18.so.1    0x00007f396eed26f3 llvm::FPPassManager::runOnModule(llvm::Module&) + 51
18 libLLVM-18.so.1 0x00007f396eecd4f4 llvm::legacy::PassManagerImpl::run(llvm::Module&) + 1012
19 libclang-cpp.so.18 0x00007f39773bfe0e clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) + 7710
20 libclang-cpp.so.18 0x00007f397774f062 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) + 1538
21 libclang-cpp.so.18 0x00007f397637fd56 clang::ParseAST(clang::Sema&, bool, bool) + 614
22 libclang-cpp.so.18 0x00007f39781b0625 clang::FrontendAction::Execute() + 85
23 libclang-cpp.so.18 0x00007f3978129c14 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 708
24 libclang-cpp.so.18 0x00007f397822adce clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 750
25 clang++-18         0x000055b075543d65 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) + 4069
26 clang++-18         0x000055b075541165
27 libclang-cpp.so.18 0x00007f3977de1f79
28 libLLVM-18.so.1 0x00007f396ecd608c llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) + 140
29 libclang-cpp.so.18 0x00007f3977de190e clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const + 366
30 libclang-cpp.so.18 0x00007f3977da9ea1 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const + 897
31 libclang-cpp.so.18 0x00007f3977daa0ee clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const + 142
32 libclang-cpp.so.18 0x00007f3977dc66cd clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) + 333
33 clang++-18         0x000055b075540ad4 clang_main(int, char**, llvm::ToolContext const&) + 11172
34 clang++-18         0x000055b07554dbf6 main + 102
35 libc.so.6          0x00007f396d829d90
36 libc.so.6 0x00007f396d829e40 __libc_start_main + 128
37 clang++-18 0x000055b07553dbd5 _start + 37
clang++-18: error: clang frontend command failed with exit code 70 (use -v to see invocation)
Ubuntu clang version 18.1.0 (++20240221023121+bba39443eb91-1~exp1~20240221023233.52)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
clang++-18: note: diagnostic msg: 
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang++-18: note: diagnostic msg: /tmp/dup128_vec_test-cfb5fa.cpp
clang++-18: note: diagnostic msg: /tmp/dup128_vec_test-cfb5fa.sh
clang++-18: note: diagnostic msg: 

********************
```

Here are the diagnostic files for the above error:
[dup128_vec_test_clang18_error.zip](https://github.com/llvm/llvm-project/files/14441055/dup128_vec_test_clang18_error.zip)

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkOllz46i6v0b9QiklQOtDHhQv3T6Vrdqezpx5USGBbGZk0AHkJP1wfvstkOzIzuKemT73VN3blU5svg--lW8BiNZ8LRi79KIrL5p-Ip3ZSHX5u9yItiHG6E-lpM-XX5higGtgNgwwpaQCZkMMkFXVKQ24AJOGiDWA6QW8CICHUg9deegKBSgMEIIBwhBBD12VJcFZGGJWZtCH_2ZPLfz3CAlhfBEhD2XgccMEIAJAlPolN-BqDmOwY5WRCiimu8ZwsQa1kltAQLHdoiguqp0RrNVFW26AbJkihkthuWZPhgnKKDASEBBB5JbsV_Nw7gVTL8i9OBh-3NeaGNL0sno4H4TmApSk-oMJascmRAhpgGYNq4wdCJ6iqAySJEphkgR2ZIdRWcMYeHgKuNBMmUJ35SBHJyirPZwPSB6a7FfIEpJmKLAjEym0IcKuz-PQw5PAwzML-J21xVrKdcOKDV9vHsmzh-abR_tbttpD86c0LqysXDQXGw_nOEkz-wcCLwy86OqjFQzTxq5BuxaitNixqrBDF1Xl4RxCZH-jv71OCj2cR8CLpvZ_r_e9CuKkLEv8Som9znrMU21Z1PSA2TS77cVTGl_sBr9wi6AoBiui1sy8UizEUQAH5e4tiVgaJ8EPqxtF8UHdMc4sS2H0t9UUYA_nKPuPqjsNkjqhToc8Dp0CT9X0oqBB_eBUTc4ANUYemlSb3giSUA9PPJTaTzYwaBTFdoO7rVsNi_utlI2HMg_PhjVTGLGE0mBkDEJIFmM3st851nD_922zF3xkm1_TeLGc2tiF8wdF2papr4v7E5PdW6XuvdvDkxQ8gbqRxFg1e3jiPgMfXsSB_cc8dBVAq88DIHoPEL4HwO8B0HsA-B4geBuQjQEuGFqnefHJkV8SkhGMPnDqXkP_T3RzyE5JiKsjpbwVVOO6powdoY1CQXAIAwsB6k5UNtVa3OK3W7x5fIbwtsi__YqL32a3IcIrps3U-f03Vs2V3H4jTcd01SxulwUMSsc-jAszu10GRbjkW7pY4uJ6i9Hsmgcz-2-3KlZB0RO9v57lyxnQXbnlBhBQdmugWCuVsSl-Y0yr7d5Acw_N19xsuvKiklsPzW1SGP74rZK_28SN5lzrjtm9CYiggIuq6ShztU6liN64nG8UqZhVdatYq2TFtGYUaNmpftjOJFrLihPDKFCdALpSvDUXPctLQ6o_AO227aHiCC68ILtXcq3IFhC17rZMGMs48NC808pD85ILD80rW1z1FZUPU-BPvzz8s1iu8tViUkxn88XtDPjT1d3d9eRLvrgtbhbLZZEvb4ovD5P8vvgC_IWNQnLLPDT_vS_r7CfWDirQfZAqbIIsyO4JF9-ZCIsAwQSFPeZJVAM-18_asC34eytbmJMOpj2k7HhDrdUcORsgfa2qowFrsMFE_0UugL8lqtp4ePpd7JgKB6tMF8v86no2LVb518-z1dLD0ziDSYSyACVxCCEMoygbkB_y29XLNvHwFA6Ayd3N_eJ6VtzdXu8N3UPvEPDXwJ_eTmdXv3wGfn2_mAG_3nHNS95w8-zh6YZTysTRqE18XDDt72EPQvpWSMOFvyWVkr5ilNVcMAr8aVFM89WsKDw89aKJh5BilFSG0f6bw1gtbmbLVX5zfx7tA4x6y9Sa-aRp_H0toIH_QJoG-A_sySgC_IdKWg1rW8z7D7Zd8Y9Gdg1xAgl_x5XpSONTW137Dy6q-HLHVN3Ix-NJPew7U_JkXCq_kbL1iSDNs-aWm7XonHqqhihGfSa6LfAfuKi54Ib5itkmaOCONbXf91T2m1FcrI8JGNIZ2cg1r0jjeGtI61dy2xLFLHijGKG-JjUzz2MmXIy29vFtuPUN21pHZ8CvhfSrpyefPVWstWFY92O6af2-0eDfB7TxV8rJWkhteKV9vZGPvnSTgV9XspHKH8GtCYZ-jviul9IDmS0xG58pJWRPYMyDdbFWk5JbS7ruqfftxbJYzZar3p-1oR6eDqvDBPg3U-DfrMDkhvzB5rxhb1VMlKsfqKouJPBv5j9npQsKfPmzmKr-ZrT6azWmyzjQZhwPT5isbWXQEqWZAsQAJiiQNah5w3pMZDEnkjKwZmJopXsItpCvnRC2AW-J1sBDyXwoAcC9HbghgqyZ8lACpABbSbuGWaz_htwoGRJw-Bbfv6YxmOaffQ_PpvlnsBDaqK6XZOnaeit2L8a-ynGChMF_vNBByWnhAB652cjOAP28LWUDBNkyK0XKhO4UA8-yAxuyY6719Xsk_p25Y4tn2Slwn6--AKmAZqY_yRE7rqSwZQfYEQW8OLi-_nZTLP95c3V3vfht9rWwU7w4sGVVK7lw9RU3rlXbVzGg4aWd5sP0QssL2BfgtgxNapzFjKZxTGPHVN-w6Gfdf7hXXBgn36qvrtIXJEUeC6mNYmTrIXc2woWlCzx0BaJw8OfztMM4C96i_bUTS74WpPlCBG2Y0u7Qql8-HUpmBM6tX9E4YMOWwa-xT1FJOfji2YVpGtRh8rbSXPHZf5k9WWOkTjUTUPZdtJMBZz2pCICT8rEn44r8KApDGOIeMz4vLcMZRiOm-pq7cGdlRX9WNrbh6pEL1jf5gw3HHKJksGJyhm4dsSgrx1Y87M1p_nmxZE0_yvWdmv2r4zvSMGFWMqf0iJ3l9NYGtIGf3PLhPjtuBpOn55RQRyxkOD3LTD9qI-hEbrc2irzixPEwAZ1wR7AUVBuiRtyNICPXhzGM057X7AyvCSRxguFgXnhuo9YRrSJan5VsKkdhchQlD9snxHAg-Xp_HtMrqwqepWd1-JmJXNDZlptp_nlECobhnhY6Lx6hDP2g4fKmuSKaV1eNrP7QR8Y75LoXx97LfYhL-DwzaZ2xs8yoTtyJG1JtuGB7ukfMvIIduIEJigduwrN-ElEIhxMAGH1oNBjGDIfgXQ5sATDi_U2m3-A2jdBAPj4XhVhV0XrspvN7S3RfdPx52nE6pFp4LhIxRlFc4x-gfeOKnmNTDUMHutHeddMPEweraFiPNd6wNameh2zwQn2xbV-85mPKMIB7dWeWtssQftW2jno69o0ElzUL2JBE-qSz5eaqvwa560zb2Qw0Ak9fOoeZWHPBhtg_QvnCCGVqyWwHfTc0DOM0MUIddv8ZrP5Y7wzSNRHrt1BGm9A1bF9ZfTy8119-suCghHxwqPGUhTCq03zHvrJ6Isy9UR6evIB39bBJbDuxdGcYw82D64gspBP8Xx0r2pOZti5qHxU3rNhXR6NJlNWka0xBWcMMOzPRHQ--LdJECt1tbQmf730mSeC-LArO-UwS1kGMPlq3dwNXeq0UEbpxHcYvgp84U75cTaQw7GkcaGGEhxSI4BlWYpzUNIrHrNzbridfro4JLdmWHBUpx8VKDIfQjtAZiiksgxhFY4pzZUU4OMpQubGqM2xcdUYDBXyWAsoqGB7vkm3LG6YW7gylYkc09v6Zvs_Si26TYK_a8BwbCBFaHUeGnuALNztZkdfEX3E78rJo72TRad36crg_rl8xjSNQVbDYEn4c9XKlyLPdy3hyXFkNTn9abe0kpyNOwiAeSmgU_xgrEMZ7EybndghlsE72638c_23jkFaj2DJRRG--skrumHre745DU0Nq1jwfKWLfuRbKKcPK2V_RZ04V-0pqr_izGYEymB1nBKr4br-pJxNoK14i6Kmjv2maQ-jqz59IcxS0XgLyIVgdJhRF9fQEYf-ltMVa0R-4DQY_QrYDhVGEG70HnyxHmsY6q1QjuEXJX0LBScuA46HAwmcDIiUZI_Bdlbn9QF4Fh70ejzbPyUSL8F7C-wA1P2nIXqRKs6Eawudia0IJCdj7jvCOVP-QpX5fpH_I8ppr816C3pKm-eaOMfty58V_WsKt6YZW-Ee1MBj5HV3AcCiT8Lmon9Aqjiv6Ht3p6PNRkHwjOr6nw_9FXQxHCHhoHTH-sQAYEDpkpX003nPgtmM-bKbRAYGUzRDAXnVTEMJkr_3wx-jTso6BpTwUufvprqOprNFicDLVhViaooxmQ_zD8Qj7BImFASgKCy60IcoUL8TQkDZx8uF5C6YljUA_u1fysNuOJx2eHNkPDgTqIWODarBbTXjDqDsUBOyJWw1SBhL3_KrTDPg7YCTQjAE-ysNDzvml7ITphqX3txM_7flWT6Mvyq0ET2lcxKHfVn7DRffkr0U3oLjrDrCV1HW8oJWaP-0vlrUhTcPolKtXd6LvqExIW_Tm4OXyAmz12s3u33ihv_HTrzC-f85Xq3zyBay-zMD87vr67mFx-xnMF9ezJVjdueGrXz6Dr7P7u6-rw3np_Vv3x6m2bv_uHfIBQTHgshSjgJjDkn9KEWhutu3rs3K_qsuoJhdV2_78RfXmL1vsZ9nt-HVf_9u9arQ6NRs25qDmDdOgdq8cGSCl3LHDbhzmR1cnoh4ukB3ixXfeetHUQ-mffoxQDxdMMAxDGETRa62-QWq_5T7RS0wznJFP7BImQQbjKEnRp80lKcM6C6uKYlxmCawyHGYE1RmLMoaqGH3il8NGzoIAxghdRClBZRrXYZhQjMPKCwO2Jby5cA_rpFp_cs8mLlOMo_RTQ0rWaPeKFKHBzMiLpp_UpZOv7NbaC4OGa6NfVjDcNOzy9O3oOMq4fGzrXab7N6GV3Jbc3eG4J6GH15QaSAHyb79GEFnAp041l3_9IYgT6n8CAAD__3GW_Po">