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

    <tr>
        <th>Summary</th>
        <td>
            LLVM 18 regression: -Os causes Cannot select: t98: v8f16,ch = X86ISD::VBROADCAST_LOAD
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            bug,
            backend:X86,
            regression,
            platform:macos
      </td>
    </tr>

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

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

<pre>
    version: 18.1.5

```llvm
target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-macosx11.7.1-unknown"

%"compiler_rt.mulc3.Complex(f16)" = type { half, half }

; Function Attrs: minsize
define void @__mulhc3(ptr sret(%"compiler_rt.mulc3.Complex(f16)") %0, half %1, half %2, half %3, half %4) #0 {
  %6 = call half @llvm.fabs.f16(half %1)
  %7 = bitcast half %6 to i16
  %8 = icmp eq i16 %7, 31744
  %9 = call half @llvm.fabs.f16(half %2)
  %10 = bitcast half %9 to i16
  %11 = icmp eq i16 %10, 31744
  %12 = select i1 %8, i1 true, i1 %11
  br i1 %12, label %13, label %common.ret

common.ret: ; preds = %13, %5
  ret void

13: ; preds = %5
  %.1 = select i1 %11, half 0xH3C00, half 0xH0000
  %14 = fmul half %.1, %2
  %. = select i1 %8, half 0xH3C00, half 0xH0000
  %15 = fmul half %., %1
  %16 = fsub half %15, %14
 store half %16, ptr %0, align 2
  br label %common.ret
}

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare half @llvm.fabs.f16(half) #1

; uselistorder directives
uselistorder ptr @llvm.fabs.f16, { 1, 0 }

attributes #0 = { minsize "target-cpu"="ivybridge" }
attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
```

```console
[nix-shell:~/src/zig/build-llvm18-release]$ ~/local/llvm18-assert/bin/clang -c reduced.ll -target x86_64-unknown-macosx11.7.1-unknown -Os
fatal error: error in backend: Cannot select: t98: v8f16,ch = X86ISD::VBROADCAST_LOAD<(load (s16) from constant-pool)> t0, t106
  t106: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<half 0xH7FFF> 0
    t105: i64 = TargetConstantPool<half 0xH7FFF> 0
In function: __mulhc3
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: /home/andy/local/llvm18-assert/bin/clang -c reduced.ll -target x86_64-unknown-macosx11.7.1-unknown -Os
1.      Code generation
2.      Running pass 'Function Pass Manager' on module 'reduced.ll'.
3.      Running pass 'X86 DAG->DAG Instruction Selection' on function '@__mulhc3'
 #0 0x000000000387f1eb llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/andy/local/llvm18-assert/bin/clang+0x387f1eb)
 #1 0x000000000387c54b llvm::sys::RunSignalHandlers() (/home/andy/local/llvm18-assert/bin/clang+0x387c54b)
 #2 0x00000000037c1736 llvm::CrashRecoveryContext::HandleExit(int) (/home/andy/local/llvm18-assert/bin/clang+0x37c1736)
 #3 0x000000000387665e llvm::sys::Process::Exit(int, bool) (/home/andy/local/llvm18-assert/bin/clang+0x387665e)
 #4 0x0000000000b798f5 LLVMErrorHandler(void*, char const*, bool) cc1_main.cpp:0:0
 #5 0x00000000037cda89 llvm::report_fatal_error(llvm::Twine const&, bool) (/home/andy/local/llvm18-assert/bin/clang+0x37cda89)
 #6 0x0000000004993618 llvm::SelectionDAGISel::CannotYetSelect(llvm::SDNode*) (/home/andy/local/llvm18-assert/bin/clang+0x4993618)
 #7 0x00000000049984ec llvm::SelectionDAGISel::SelectCodeCommon(llvm::SDNode*, unsigned char const*, unsigned int) (/home/andy/local/llvm18-assert/bin/clang+0x49984ec)
 #8 0x0000000002403bd7 (anonymous namespace)::X86DAGToDAGISel::Select(llvm::SDNode*) X86ISelDAGToDAG.cpp:0:0
 #9 0x000000000498e0b5 llvm::SelectionDAGISel::DoInstructionSelection() (/home/andy/local/llvm18-assert/bin/clang+0x498e0b5)
#10 0x000000000499c3a6 llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/home/andy/local/llvm18-assert/bin/clang+0x499c3a6)
#11 0x00000000049a00fc llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/home/andy/local/llvm18-assert/bin/clang+0x49a00fc)
#12 0x00000000049a1ca7 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (.part.0) SelectionDAGISel.cpp:0:0
#13 0x000000000240a325 (anonymous namespace)::X86DAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) X86ISelDAGToDAG.cpp:0:0
#14 0x0000000002c30035 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#15 0x0000000003213329 llvm::FPPassManager::runOnFunction(llvm::Function&) (/home/andy/local/llvm18-assert/bin/clang+0x3213329)
#16 0x0000000003213461 llvm::FPPassManager::runOnModule(llvm::Module&) (/home/andy/local/llvm18-assert/bin/clang+0x3213461)
#17 0x0000000003213d67 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/home/andy/local/llvm18-assert/bin/clang+0x3213d67)
#18 0x0000000003aed923 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*) (/home/andy/local/llvm18-assert/bin/clang+0x3aed923)
#19 0x00000000040cca5a clang::CodeGenAction::ExecuteAction() (/home/andy/local/llvm18-assert/bin/clang+0x40cca5a)
#20 0x000000000434ac29 clang::FrontendAction::Execute() (/home/andy/local/llvm18-assert/bin/clang+0x434ac29)
#21 0x00000000042d0562 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/andy/local/llvm18-assert/bin/clang+0x42d0562)
#22 0x00000000044189cf clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/andy/local/llvm18-assert/bin/clang+0x44189cf)
#23 0x0000000000b7b6da cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/andy/local/llvm18-assert/bin/clang+0xb7b6da)
#24 0x0000000000b736b7 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#25 0x000000000410de69 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#26 0x00000000037c1672 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/home/andy/local/llvm18-assert/bin/clang+0x37c1672)
#27 0x000000000410f554 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#28 0x00000000040d6445 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/home/andy/local/llvm18-assert/bin/clang+0x40d6445)
#29 0x00000000040d6f3d clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/home/andy/local/llvm18-assert/bin/clang+0x40d6f3d)
#30 0x00000000040e1514 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/home/andy/local/llvm18-assert/bin/clang+0x40e1514)
#31 0x0000000000b78d79 clang_main(int, char**, llvm::ToolContext const&) (/home/andy/local/llvm18-assert/bin/clang+0xb78d79)
#32 0x0000000000a6fec3 main (/home/andy/local/llvm18-assert/bin/clang+0xa6fec3)
#33 0x00007f37fa23efce __libc_start_call_main (/nix/store/anlf335xlh41yjhm114swi87406mq5pw-glibc-2.38-44/lib/libc.so.6+0x27fce)
#34 0x00007f37fa23f089 __libc_start_main@GLIBC_2.2.5 (/nix/store/anlf335xlh41yjhm114swi87406mq5pw-glibc-2.38-44/lib/libc.so.6+0x28089)
#35 0x0000000000b72325 _start (/home/andy/local/llvm18-assert/bin/clang+0xb72325)
clang: error: clang frontend command failed with exit code 70 (use -v to see invocation)
clang version 18.1.5 (https://github.com/llvm/llvm-project 617a15a9eac96088ae5e9134248d8236e34b91b1)
Target: x86_64-unknown-macosx11.7.1-unknown
Thread model: posix
InstalledDir: /home/andy/local/llvm18-assert/bin
clang: note: diagnostic msg: Error generating preprocessed source(s) - no preprocessable inputs.
```

Works fine with clang 17.0.6.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWklz27i2_jX0BiUVCXDSwgtastLucl5cdio3b6UCwUMJNyTABkAPd_F--yuApETKcuzE7t7cVLdMYjjnw5kBgmrNtwLg3IsuvGh1Rluzk-qcikLBg_pxlsvi6fwelOZSeCRDQToP5pHnrzw_639jv_uvqu7rrslQtQWDCmpoRZ9ka5BHVsjDGGa1RzI5a3DieyQj2P3Y12D6ap_i0P3M-P4hwKlHsgCnszL1-yfhmuJhehzO7uwwjCdQjOJNBQOMxzTexOGsFT-EfBCzmjKpH4NgnsyDoXFPoP_FkYcxk3XDK1AbZeZ1WzEyX8q6qeDRw2kZxB5eeBg7JuapAeQlF2hHq9LDS_cXeclqQpRcoHUrmOFSoMwYpa2Eay40_w90QwoouQB0L3mBvNDfbOq22jHi4bQxCmkFxrOLfTM4Dy-QhyP_AAlHwfgFj1_I-CXs5hLfrqtDh2x77BbMaFX1Q0NnCfOS5nruGKcjTovRzMTNzLlhVJs9nxgZiXgQjwambiBndYPgL9vnZltwJEjCcDRy8XYweAom8E-iWTxHEwSn4AT-KTxBZw4aKmAG8cCtxg7kATKqhf7RUR2m5WpocsqoaA6VeyWTVybrWoq5NYGRTY1aSYashTUKCt1bfk_Dw1E0cFNgnHmNiQTk5ORotLB58HxhwcGS_Mc_yNL3x---7_tjyYSOQFm31V7Y86BHh8ecXpDgW_lEJ_j0bILxuM6OS93mB8-IhoGDTrWRCg79se23njj4FK34ViA8UuXL-npLMBDS2nJO2Q8kZKkAkJD6STAkZCseuCiQboC1FTU0rwA98KpSYFolUA21VE8eToUUsDf1AlhF9ys47Ry9nwfH6FoNFbcCKEChgitght-D7gZMOp1EnhFfuoDoVOwfh0JqjOJ5a0D3IcZaXHIxBEMbtLtIPmNNa-MYWXkY8_unXPFiCy7sDhSntII9rY-T5Qj9kPxOZkQmhZZVH8q96ELwx5neQVV5JPs_D6-1Yh5e_4dvPbzOW14VMyuyIJ0pqIBq8KKVh0Nkh1YWvP3bDaBagzJ2GhceXrOKii2aMaSgaBkU86pCsz71vSHZodmXXo2lTdkIlJLKmp97QFwgKzUQhW1bUiGk6R3SNpiFTcHovssyS7ZzEv-exld3K49kHsm-Xdx-yVbL7O7r5vpLtvLI0sNpJWmBPJxql5tQqWSNrMAMFWbWSFlZoyWXyDjHMoG_j8HumWSIx-EzVv9StGlA3V7doK9u_cue5I2lSDJXTCyHWJGs12vLYx8wHPFoTPwUlZfmXwlU9i5sSeyzteu8ub7M7i6RbvOaG0RR3m6RgkYqY1PMzpjGeryH1x5eb7nZtfmcybpXef9n1ij5byt2vOZat6A9vEZUFIgLVrUFILMDxBTVO6cxoyhzKaZR0CjJQGsokJat6prtTKq1ZJwaKJBqBdJM8cbMO8h3xjpL0daNReaa_Dly_26U3CpaI6q2bQ3CuGjl4fVO1uDhNRXF0z9ntUEPaikLQFsQoKjTgevEfedtKwQXW9RQbQNDsg-2N7bhMxV0C8rDCZIC1bJobbmIkwM0Dye9WMgLFL-nMVpln2YeuVxln9CV0Ea1HY875y0WU8dgMBM7bVLXJb0luijoP_rDP5ImZQA5csbgLF0_6e7hRnFhnKq-dvpOD4MUfdhIbRTQ2sMuBnNhugCf_o62PHzhP_ZYDvWTC7NTsCwKT4K9bcUd3wpa_UFFUYHSDsi78Vh2Ezx4gidhQULiEZ6l9ZFbYPIe1NNSCgOPpuvpcF0-cltZf4SwOt4TcORIWHEcwWnNOp_tXsaQlijvAuR75WY5T6CFY2h-nizSMkLX198-X9pU0CvNw6krGXFmobAdVV3k7hsGbIwFm5pyMWeNDSC--3_PKTrSUEHTxUgIXWjcuIS06RLS2LC_Pth9Uc81_jCJdDAmEonHOMPFgsRBOsK59-xV9unqDqrevlyS_F8wXfcE-t3qf2QBTlbvQ9uDmaBNjtCmIbBX0XatNnouXZH6EtwlaoU7LiieK33f8wE-0-OeLCwdLwyHPsmLxDKhQoqnWrYaCVqDblwEXHTQv6fxKvv0VZ5Y7MsacdUEVMPE08a7mIo5BT-PXhXzSo5SwigjvDsA9gD28rLx2D8yBEZo_LrZygI-gchEcVlzs8o-fQg4x3sCLpiCo75fvtVKs6q6oJqzi0qyH3qixn1GP4SF90J3yCbQ8RH0gNHkVeiqFV_EZ8p2XMCAcgL9Wd-Afd5QZea-fTsm_dwyLT5y5CeU4Oi3_OQ3Mb_qPhbkJMtgRnyfjN3niLIt0EaYToL5qeRO0DuNa5qTcEAIHuek9Y2dOpSKv4zo99NSh2Rih_Ex1DAO3gD1s6tsp3rsmz4EZhgHE5jJMcwiHrtLBVvKnvpq5wD4qm4OVvj3gS3iZAJ2kmMIhWKBCeqmdCVYzc1FtxP-0pqmtVlk1L3idCukNpzpS7HlAvrKZDTkD6AFqDugiu2-NNY89KSIGQ3tY_Ero7rt6SuDrqnYnhoyCltGcbG9hXLaPEg7OyLYCyHrDXw85UoY1Wp-D7dQLoW5Mcojy0P3fdm78ppXcPekDdQeubQktCm6nlbwv1rYNEcz7VameVDcwGbY0IwmFVDStjKbAiow8MpEctnzfL4ku9Fva1vivrs86w1oYmHTusFnjEb0hNKz4QzB1f3AWgPZhxULHdcxLDwtFkhImS3fD7DWym6R9gof4_oIRB3DCaJphYALP4rxVFDd144rdy7D4LSsXl7CBxQHHagJ6mlxEAbpgpWTANLhO4C_l4w-x_pscR-wV-jATNCSo71eHhd0v2mbRN1MKfpkowNZTgv_3o2ONwP73eH7QHeQJpiP96ckzhM0iHUZfHWbwHFpX9Oq-gbMyD6pnFjAUSy0NPojgUklWSh-D-pk4YAnhUMY-AXEi-6r3YHucOazUU6Q3Tc95z0uINkhwwH1phQW6cEiOt69dSwDu02jojh2xJMK24dI6TIArSbB8RD490FxP2GzYY-PQdC95LbotgGUW0xOipPBtmFjFOVGD91H5Ghl9W6kGvXbIaMzA2cxnczdFA8nFa1zawPJQVQ4raS1kAX6U-an9REfH__ECX7T8c9tK-5oCdXTRJw_V90HnBDFyTSQJEf2VEZRiP6b7eGoon9R8ek0wRZxGEYvCs6FWfospQ3SnMTko4l2wEvl1k-GZkeHVfu1vSOduzVOrGdxLISSFL8qhD9lrl-WwJ8yv-bavFRNPgu6e6U3lFt996eYbxVabxl_g-hKUoxFNz10D30IouBFx1uNnieZ_URKf0nk_6Do3ls2OllMhBUcJeO0SPqycSghBrAuOmS9b7-eat9XNFgYE5yTssyncQmMIIvwXYw6OhNGQ0WVlCQpKSZQMkCbTcVzGyqpMhub4Tcj1oI_enjtrhU4BFVJSPRY7cLg6d-7OghC_cDTJPTj-q-oeZhtLakZnpN0FoYWI8-7XzbXch47XDgpGUxghUewSj9dTGE5dYX-p-uri-UGz_E8-hvxpX461U90ZEeuoOqQvdMULKU9q8FlDt-3uy-QZb81QKx3npLyCgr0wM0OwSO3tlkASnwLptWAZvfISKQBEB9V8GMuqL8y19-XsxN_7QsvioOEBhFdAGWL2E9TChEsAhLiMC1STGIgYb4I8sNpS3cSYFf1lutt3ZSdAlqgWhbu0A81UvPH4VO2NrSqoFhx9cufdqfSFtJuyDNU7I9HUK1dj_umtP9gK7anv1On2oaEGRJy1O-uaHDRtEbPf3IV419S_dDI3aFz2uyUEyRzfx7Pz4pzUizIgp7BeZAEYRInmJCz3TkLIj9nIRRlsgjYgoRhmi5oUWKfAmAGZ_wc-zj0I59gPyARmecRKYpFGQMrKfHzyAt9qCmv5u4OjFTbM_e9_nwR-H505u4EaXflEuO83bqLeUv7vL9m8T2N960Ktgq0u4E5NDUVNaVUNow69dqOaHWmzp0N5e1We6FfcW30AYHhpoLz6-tvn1GQohFRkqHZF40YbTXoD7jfcdaq6vz3LzQ4Gf1_AAAA__-VaZrD">