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

    <tr>
        <th>Summary</th>
        <td>
            [AArch64] Cannot select insertelement with bfloat constant
        </td>
    </tr>

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

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

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

<pre>
    [Demo on Compiler Explorer](https://godbolt.org/z/zff6cGq4v)

Code:
```
@G = global <8 x bfloat> zeroinitializer
@G.1 = global bfloat 0xR0001
define i32 @test() {
  %L = load <8 x bfloat>, ptr @G, align 16

  ; This works
  ;%L.1 = load bfloat, ptr @G.1, align 2
  ;%I = insertelement <8 x bfloat> %L, bfloat %L.1, i1 1

  ; This doesn't
  %I = insertelement <8 x bfloat> %L, bfloat 0xR0001, i1 1

  store <8 x bfloat> %I, ptr @G, align 16
  ret i32 0
}
```

Crash backtrace:
```
LLVM ERROR: Cannot select: 0x70579a0: bf16 = ConstantFP<APFloat(1)>
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-trunk/bin/llc -o /app/output.s -x86-asm-syntax=intel -march=aarch64 <source>
1.      Running pass 'Function Pass Manager' on module '<source>'.
2.      Running pass 'AArch64 Instruction Selection' on function '@test'
 #0 0x0000000003069058 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-trunk/bin/llc+0x3069058)
 #1 0x0000000003066c1c SignalHandler(int) Signals.cpp:0:0
 #2 0x00007fe8b47f3420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #3 0x00007fe8b42b600b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
 #4 0x00007fe8b4295859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
 #5 0x000000000069dd50 llvm::RISCVISAInfo::updateImplication() (.cold) RISCVISAInfo.cpp:0:0
 #6 0x0000000002e51f14 llvm::SelectionDAGISel::CannotYetSelect(llvm::SDNode*) (/opt/compiler-explorer/clang-trunk/bin/llc+0x2e51f14)
 #7 0x0000000002e575a5 llvm::SelectionDAGISel::SelectCodeCommon(llvm::SDNode*, unsigned char const*, unsigned int) (/opt/compiler-explorer/clang-trunk/bin/llc+0x2e575a5)
 #8 0x0000000000a094dd (anonymous namespace)::AArch64DAGToDAGISel::Select(llvm::SDNode*) AArch64ISelDAGToDAG.cpp:0:0
 #9 0x0000000002e4f577 llvm::SelectionDAGISel::DoInstructionSelection() (/opt/compiler-explorer/clang-trunk/bin/llc+0x2e4f577)
#10 0x0000000002e5be35 llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/opt/compiler-explorer/clang-trunk/bin/llc+0x2e5be35)
#11 0x0000000002e5e889 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/opt/compiler-explorer/clang-trunk/bin/llc+0x2e5e889)
#12 0x0000000002e60f56 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (.part.0) SelectionDAGISel.cpp:0:0
#13 0x0000000002446f70 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#14 0x0000000002929352 llvm::FPPassManager::runOnFunction(llvm::Function&) (/opt/compiler-explorer/clang-trunk/bin/llc+0x2929352)
#15 0x00000000029294d1 llvm::FPPassManager::runOnModule(llvm::Module&) (/opt/compiler-explorer/clang-trunk/bin/llc+0x29294d1)
#16 0x000000000292b040 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/opt/compiler-explorer/clang-trunk/bin/llc+0x292b040)
#17 0x0000000000767810 compileModule(char**, llvm::LLVMContext&) llc.cpp:0:0
#18 0x00000000006a8a32 main (/opt/compiler-explorer/clang-trunk/bin/llc+0x6a8a32)
#19 0x00007fe8b4297083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#20 0x000000000075f75e _start (/opt/compiler-explorer/clang-trunk/bin/llc+0x75f75e)
Program terminated with signal: SIGSEGV
Compiler returned: 139
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0mN9z2yoWx_8a_MLYg0A_H_Lg2LHXM-3eTNzpzD55EEI2GwRaQLdO__odkJxIrnub2_Z2msRGOt_z4ZyjA4haK46K8zuQ3INkPaOdO2lzp-mzYbNSVy_-wpo3GmoFV7ppheQGPpxbqQ03IFkDnJ-cay0gS4A3AG-Ouiq1dAttjgBvvvqfuk7Z9n_xnwAXAK0BWva_V7ri3qwfStHwv_8aoy0EZA2PUpdUQkBWOTzDspaaOkAe4FdutFDCCSrFV27erBbR2K43gOj8hBCK-rsqXgvFoSAYghg5bh3AOcAFBNl9fweEACcfgo7UtPrGO8Ar2Drjzbf-M5XiqGCUjmcHISD38NNJWPhFm2c7GvXiA2aQH3RHoovoTRZPLXfBTijLjeOSN1y5b6PjPXiFYfq9Qz8gIhh9h7LS3CqAMzeKwc84u8T6pjfrtOE3JXZ_HVQIDXchZ5cKyda3K6evLUPtCZaUPTtD2XfL7MOHzx_hw9PTH0-ALOGKKqUdtFxy5vwAOmcoyQqK_JeyjtIQjpVW1lHlNo-ArJaPmz55eeTLmzz0wjsF604xJ7TytqHIwoXHDw_L_QO0XdkIByksuyM0vNXGQafh1aMk3KkrF0w3AG-k_PPyZ94a_V-PiDfC2o5bgDeQqgoKxWRXcehOHLJpBBa9-72j7BlWXdO-hgQtACoejT4a2kBqjp3PsoeAAG90672w4cGf88uDjzdMUnWcO9OpZ4A3pVABjsG59na0bb1159rOLSycn_N0Tm0zty_K0TMga6Ecl3DeUMNOgKyp_5vGvjKs7ozP2BDJyOM9dUoJdYQttRYCnG2G2MJHP_CRKnr0UJnvUo2uOsn9XRMxnA0hwLcEl8ve_05ZZ7peex_qwGewF74kNEhfGkc2lCfABEF0Rpd_BKUFSnIY0kaWgCzti-0_PBqhXEjEp1CbOH-7ydAvB22d4bQBOA3PkHKhN_kW9ffTAfA9Og8sr-3Xw0ZXsCmLGNyLo6LyX1RV0ovmg-9-2C5Y66sGhZ9XITwIZTXPyzirSYwRPBwMD4_6wbgBXYoS4M05Tw9pPJdCdef5UXX9hdadDKfVwuoFCsRRHGM04SUTN7hMESqhocLyd-gzr5wG5ZggVE6U46lykeRJAWmp30U-UsY4T4qJcjKOMUqLqkrQqCCedvvV591-uVO17ke6tqKO75pWCkb7ysuH5C-YlpX_PLa6nZF07BbzJKqjeOT2tazXy-1uz2U_2ve-_3DXX54U5X79b79U4-WvFuIAMwlSdkWbJTT5IW0_6jcQK900IU43cVewU2GDU0F2ogYy37qvr_yGJ2zgnkwsn2SfoiKuKu-EKq1eGt1ZqGjDbRtaQNGjD21ovdx-0jcm_P2sDIbe4GJ8uziKabjjOsmyH4Z7rUd9cdQW81-PWwB42xhiEqGrgig5-XFB-FLYcrVU1UMj3Hq5_S1wwfcELrqC43levLNal1LeUyvYvdTs2U5S-bqcDfWZ_gZ0TzZBx1P0FNVJ-kN006k_1EfKTkLxC-UE_ZtrF_ZFS43z7byA19LfVqbnIxO-OE7rbNwtrxz5hX-EeJPtL6Fu6N3miidcBS5Igkdcm0dvetmC_G2in09xTzJJcXKNGlfRO1A_hh3TNK3D0G_BjKtogpleYZYoHmda8iNlL8Ne6Q3YL4uv0P8YrGeZwE7WJ5SlWR4hOAi_Bs4vLqETh5XljcyfL1ZaOX6-PNVSsttlNl0uUppTgmFDhfqlGfU6kwkVV_udDOUEHg5-M3Owjhp3GHl9794nRjkZe8FoGrakzhIOe_1fmlCv9Orqcm5x3DRCUccr-EW4E7Rhy-oPMfvddv-w_Xx55TC8wTDcdUbxyt8RkeLqcDir7khVkILO-F3k984IZUUxO93xImGU4KhiUVlFlMZVndSIEVxXeZrTcibuMMIEZTjDhJAILRIWxRHPOEOkjjJKQIx4Q4Vc-CJZaHOchSPcXRpHeTSTtOTShpcxGCv-BYaLAGOQrGfmLhz-yu5oQYyksM6-qTjhZHiLM-wEQLKenmevTvEhSsOJnQ0H2lln5N3PH0HDFP4fAAD__5cnZiw">