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

    <tr>
        <th>Summary</th>
        <td>
            [AArch64/SelectionDAG] Storing a v1f32 along with a f32 crashes backend with assertion error "Extract subvector index must be a constant"
        </td>
    </tr>

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

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

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

<pre>
    ## Description

Storing a v1f32 along with a f32 crashes `llc` with assertion `N2C && "Extract subvector index must be a constant"` failed when targeting `aarch64` using Selection DAG. 
The problem doesn't exist when targeting `x86_64` or `riscv64`.

## Minimal Reproduction

https://godbolt.org/z/7Wqnazzar

### Code

```ll
define void @f(<1 x float> %0, i64 %1) {
BB:
  %P = alloca i64
  %E = extractelement <2 x float> <float 0.5, float 1.0>, i64 %1
  %G = getelementptr <1 x float>, ptr %P, i64 1
  store float %E, ptr %P
  store <1 x float> %0, ptr %G
  ret void
}
```

### Stack Trace

```
llc: /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:6366: llvm::SDValue llvm::SelectionDAG::getNode(unsigned int, const llvm::SDLoc &, llvm::EVT, llvm::SDValue, llvm::SDValue, const llvm::SDNodeFlags): Assertion `N2C && "Extract subvector index must be a constant"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: ./llvm-project/build-debug/bin/llc ./crash-reports/dagisel-aarch64/1.ll -mtriple=aarch64
1.      Running pass 'Function Pass Manager' on module './crash-reports/dagisel-aarch64/1.ll'.
2.      Running pass 'AArch64 Instruction Selection' on function '@f'
 #0 0x0000000003af78fa llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/Support/Unix/Signals.inc:569:11
 #1 0x0000000003af7aab PrintStackTraceSignalHandler(void*) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/Support/Unix/Signals.inc:636:1
 #2 0x0000000003af60f6 llvm::sys::RunSignalHandlers() /home/henry/aflplusplus-isel/llvm-project/llvm/lib/Support/Signals.cpp:104:5
 #3 0x0000000003af81d5 SignalHandler(int) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/Support/Unix/Signals.inc:407:1
 #4 0x00007f614194c980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #5 0x00007f614083ce87 raise /build/glibc-uZu3wS/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #6 0x00007f614083e7f1 abort /build/glibc-uZu3wS/glibc-2.27/stdlib/abort.c:81:0
 #7 0x00007f614082e3fa __assert_fail_base /build/glibc-uZu3wS/glibc-2.27/assert/assert.c:89:0
 #8 0x00007f614082e472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
 #9 0x0000000003800507 llvm::SelectionDAG::getNode(unsigned int, llvm::SDLoc const&, llvm::EVT, llvm::SDValue, llvm::SDValue, llvm::SDNodeFlags) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:6367:5
#10 0x00000000037dbf90 llvm::SelectionDAG::getNode(unsigned int, llvm::SDLoc const&, llvm::EVT, llvm::SDValue, llvm::SDValue) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:5975:10
#11 0x00000000036b73d2 (anonymous namespace)::DAGCombiner::mergeStoresOfConstantsOrVecElts(llvm::SmallVectorImpl<(anonymous namespace)::DAGCombiner::MemOpLink>&, llvm::EVT, unsigned int, bool, bool, bool) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:18329:23
#12 0x00000000036b209a (anonymous namespace)::DAGCombiner::tryStoreMergeOfExtracts(llvm::SmallVectorImpl<(anonymous namespace)::DAGCombiner::MemOpLink>&, unsigned int, llvm::EVT, llvm::SDNode*) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:18866:19
#13 0x00000000036ac2f5 (anonymous namespace)::DAGCombiner::mergeConsecutiveStores(llvm::StoreSDNode*) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:19229:21
#14 0x00000000036464e2 (anonymous namespace)::DAGCombiner::visitSTORE(llvm::SDNode*) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:19538:12
#15 0x00000000035fd9a8 (anonymous namespace)::DAGCombiner::visit(llvm::SDNode*) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1787:40
#16 0x00000000035fcae8 (anonymous namespace)::DAGCombiner::combine(llvm::SDNode*) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1828:10
#17 0x00000000035fc0f6 (anonymous namespace)::DAGCombiner::Run(llvm::CombineLevel) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1626:18
#18 0x00000000035fb9df llvm::SelectionDAG::Combine(llvm::CombineLevel, llvm::AAResults*, llvm::CodeGenOpt::Level) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:25396:3
#19 0x000000000385979f llvm::SelectionDAGISel::CodeGenAndEmitDAG() /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:772:3
#20 0x000000000385934d llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, true>, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, true>, bool&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:688:1
#21 0x0000000003858deb llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1603:11
#22 0x0000000003856396 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:467:3
#23 0x00000000015268a5 (anonymous namespace)::AArch64DAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp:55:5
#24 0x00000000028b22b5 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:91:8
#25 0x0000000002f995d6 llvm::FPPassManager::runOnFunction(llvm::Function&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1430:23
#26 0x0000000002f9e402 llvm::FPPassManager::runOnModule(llvm::Module&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1476:16
#27 0x0000000002f99ea9 (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1545:23
#28 0x0000000002f99a1d llvm::legacy::PassManagerImpl::run(llvm::Module&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:535:16
#29 0x0000000002f9e6e1 llvm::legacy::PassManager::run(llvm::Module&) /home/henry/aflplusplus-isel/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1672:3
#30 0x0000000000d391ec compileModule(char**, llvm::LLVMContext&) /home/henry/aflplusplus-isel/llvm-project/llvm/tools/llc/llc.cpp:737:41
#31 0x0000000000d37592 main /home/henry/aflplusplus-isel/llvm-project/llvm/tools/llc/llc.cpp:418:13
#32 0x00007f614081fc87 __libc_start_main /build/glibc-uZu3wS/glibc-2.27/csu/../csu/libc-start.c:344:0
#33 0x0000000000d36d9a _start (./llvm-project/build-debug/bin/llc+0xd36d9a)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzNWltT47gS_jXhRUXKlu8PeQgBZqcKFmrgcKr2JSXbcuIzsp1jyUyYX7_dkhNfgCXMMgAVYlmSu_vrm1py4ip9mE2oAx9yymVS5xuVV-XEOp1Yc_N9o6o6L1eEkXs7cyhhooK7H7laQxd2JDWTay7JxLeESOC7HZSS10gMB_6kCzKhPnzgQs-2qmaJIrKJ73kC9ElepnxLikYqEnOgm1SlVKxUMBkJZiwXPCU_1rwkitUrrlAiGGGsTta-i3MaiX03XABF5Ho6_zIlBsLtmpNNXcWCFyStuCwnNFCEb3Ng95jmNvSXhiQIBpc6l8m97pj29dJq7TIv84IJ8o0Dh7RJxupbK7WREwemn8NnVaVxJdS0qldw9xP-g__-v2Q_f7L6MW0kv6hSPhjxLfMRwnSkPMtLTu6rPCUT18omNJw4C5tsSSYqpibOGWjcsyZggNx3sW1PaEQmwYl5_uQEhdNNgqPXZOKcgpFFlTB8ojd0poe4MR7oueClgq4FHTBzFrpNrKmHTM2NPbVgcCBER_eLpgsGaGluVE1GGPBJ3Q0C7qjsSUjwIN4yQjEHkwdzntNMO_vLbnbNldZoq_PgdKT8p211o1jyndyCdp42mbnFGHHmwO58XRUcL7ysH-DKMrERjcT_41xyAV1C3BfH4Ff_A59ub_GSx_CNnvGFgyuf730eXH50O002G-DmO76PTDUBMLczvzm9Y6Lh_Z4-Fd0DFvkT3Y-GTSnzVQkRmGNILkx4DqhdVIkJ8EWv--zudtjRcn228zFdFOBcsJUEp0UE87fKKjRos0ob1NcXZ_ObM3y4yBXMjZsVuMGmqhVRFRlFMeS3Jp4mVdEzytBUuZQNB6HPCStRbYloUk4UJCKdLkkMroLi8ukuy6LvpE2x2Ycjppvouq5WNSsIJKgGYwOFINPH_OImF-lxykFsvMtLPSXRUzXHYwMGRUrZCv3reJc86bk9FYIcFwrSv-AQjLsRLYeNcnxryhLz4wbSOig7OG9Kk2avseOSlWzFa1QqdBWQBwXHWYdz15M1O_oUu_lcTyZfwYC1SbJdqm_ZZjuR4N5kwqCNZwhOi1hba_fnsCwIM9ZzNPkgTeMa1jqljWHimIbdpJr9WFbAn7OidXUdDtG_j-WbZoPqgdZ_ynyLHRBuTMgpOA4w9nz0fdvu4NhjOIzFZCS7ofEH-J9A04Q6odH5ewgM-QYF7uSlI3l9K_OfUj_YfSC2xOXsbQXeSWoyo225qOBOUmckaWinHhmr8p3s7lrBUI1uK1yQ-bZrR24ShRZZLmuul7dljetfuKduCpljkZfN9nhVNmZgo9bgwelUVrAm0xNra1Oggul1z8brs7FCJ-FhQGoGgMgu1WAWBGLJcfNX4_y42d_SKUQdPZcaBzSmmALAvCnfYPA3BiZ03GtpQDK4atJT7ek2fFmdJP5IEh5kNmFxpZEeJolKjTb0U5pJOGISDJlQ7kBuWC5NAbvEVWIZs8Oxm-f2DcMyGrIMxyzdgB5guwSt5murORY8MrBaNPDc0LI8K_jF9X28suuF898v788t7O9eDAVdzGMyHS4OQRpnkfWZNPfOCvKiwNOpsdPQcL3x48BJtb-ysiofiqqRpGQFlxu9ZEZGfCC4qAooRSBl6o6Cwy4Lt5NcXmWLthaTV_UdT84E1ga9tfYG9lTiTpdxX4uNgML9tdwueXG1ucjL73r78LQBxtaLq0o8vv5O9ffE3q1IoaMxwZ5ir346Uj-1IvZq9av6QSv_Es1wlbXl8juo_fkYeSIOTFy9TZXyKq2HeotkR53Wh6WAzxKaeb_m9OjsPGlUft_6_1Dp2PVxyCNq_M3ukLtD5K7v8teH-30uc3Vze_XtbIj244B6TohX2gH1BkC9LI1Y-GtAPwnGIAx04dhB9EcQE8ZfDzExd58EZEjD0foUjEHi_uK1IGHzMQDYjl7we_7-q4BPdToKO4zhCGMcpdk_VimLJ4w2xNRPvfP5Ny4bvQ7PhyOt2FcbZe4_RCHUcyLUSG9VHBW8ULZEzynkK9wMwMzL9KzIleb2NjvMgyoslKMFFED53odDrTEcx01fhGN6T5jMkxNRJd8Hxs5FLtUyV7xmsMTAYj4eSrmC3Y3pKUH-ZaWP_-Vgau_MBf0C2rpOzWCfqhv6XMEc0e779CTT98nEMSWd_yEm90OdtzqT2yOThymPDzT5XIjO6sN6Yn82120-PgCs7VvOpDu1Qrh0BNeHkH4Rbt2UV-UlS9aQDHbIBnAfjX0MXlfvKnvxPCgfbY_6IXuxfGzPOYHybfUptHCr34xBo5Wsa6FsOzl3G0fcNnb7ajooI2kYUxp75FmR8SS5B_ZJlL_PyE8I06KK8LioW4fpoGakWRR5ad-Lz6_x2d2J-Dvj-foNvi74iiUPPSl2Eek61mSwsaT-CAt3LXoAlkt9wj_0v7brXXAEujbyOxzB2CacRS_F2uXnBOe53shI4Rgcs_uFgdCUTLtHz-zfW1QfhcZzvJGlorHH-dx-GcyHA7H9Ubk2fKNkpU5kczzuKza54HsXStas1vX0qKS-uLi7XFSl4ts3WJ8VlDRS3ybme1dhOnov2C3Aw9dGIHPgRZQULC9_B3vX1tVOT2V0eOptZ0kYkOUSD7aXUrFaLXeyHHLOnkg8FdcvGExTD2o6-szdcfHVTrdJHL7aAfQ-7PaJYYy54vC3qvoA3jy_P4Hfv-U_4jPb973Aop4XHaUzJ42ciB2pXAk-m3gn3UI6qCu8U3LwL23w5TEv0_HvbHhd4y9WXvkm_KipxezX3297oeNZR-uZbaVuGLk-lLCZG6YsSdM0TGI3SeMgTlzrSLCYC4kaAKxH-YxalNqWDXWSFdnR1AsC14ZWwCP4OPgGl4M3iCkyxt_LHNUzLQPYQsIgbhhkNwhawDNGvqPPGrWu6tkf7OcDyLo-0vLOtLB_AwMeX9A">