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

    <tr>
        <th>Summary</th>
        <td>
            Instruction selection failure when targetting aarch64 architecture with 16bit vector types
        </td>
    </tr>

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

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

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

<pre>
    While I was trying to cross-compile following llvm IR bit cast using llc with following command in debug mode towards aarch64 architecture.

```bash
llc example2.ll --mtriple=aarch64-linux-gnu
```

(LLVM IR I'm trying to compile)

```llvm
; example.ll
target triple = "aarch64-unknown-linux-gnu"

define i32 @bitcast_failure(ptr %0, <1 x i16> %1) {
  %3 = bitcast <1 x i16> %1 to <1 x half>
  %4 = extractelement <1 x half> %3, i64 0
  store half %4, ptr %0, align 2
  ret i32 0
}
```

I'm encountering some kind of weird error. Is this a bug in LLVM? It seems like there's a problem when trying to scalarize 16 bit data types.
I'm using the newest llvm version that I just cloned from main branch.

```
# llc --version
LLVM (http://llvm.org/):
  LLVM version 21.0.0git
  DEBUG build with assertions.
  Default target: x86_64-unknown-linux-gnu
  Host CPU: znver4
```

Is this a bug in LLVM? or am I doing something wrong?

Here's the error log
```
llc: /home/jwkim98/llvm_test/llvm-project/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h:161: const llvm::SDValue& llvm::DAGTypeLegalizer::getSDValue(llvm::DAGTypeLegalizer::TableId&): Assertion `Id && "TableId should be non-zero"' 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-build-debug/bin/llc example2.ll --mtriple=aarch64-linux-gnu
1.      Running pass 'Function Pass Manager' on module 'example2.ll'.
2.      Running pass 'AArch64 Instruction Selection' on function '@bitcast_failure'
 #0 0x000064116e051396 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/jwkim98/llvm_test/llvm-project/llvm/lib/Support/Unix/Signals.inc:804:22
 #1 0x000064116e0517b7 PrintStackTraceSignalHandler(void*) /home/jwkim98/llvm_test/llvm-project/llvm/lib/Support/Unix/Signals.inc:880:1
 #2 0x000064116e04ebe5 llvm::sys::RunSignalHandlers() /home/jwkim98/llvm_test/llvm-project/llvm/lib/Support/Signals.cpp:105:20
 #3 0x000064116e050c05 SignalHandler(int, siginfo_t*, void*) /home/jwkim98/llvm_test/llvm-project/llvm/lib/Support/Unix/Signals.inc:418:13
 #4 0x0000782303a42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #5 0x0000782303a969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #6 0x0000782303a969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #7 0x0000782303a969fc pthread_kill ./nptl/pthread_kill.c:89:10
 #8 0x0000782303a42476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #9 0x0000782303a287f3 abort ./stdlib/abort.c:81:7
#10 0x0000782303a2871b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#11 0x0000782303a39e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#12 0x000064116de34302 llvm::DAGTypeLegalizer::getSDValue(unsigned int&) /home/jwkim98/llvm_test/llvm-project/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h:162:31
#13 0x000064116de92ad3 llvm::DAGTypeLegalizer::GetScalarizedVector(llvm::SDValue) /home/jwkim98/llvm_test/llvm-project/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h:851:51
#14 0x000064116de53763 llvm::DAGTypeLegalizer::ScalarizeVecRes_BITCAST(llvm::SDNode*) /home/jwkim98/llvm_test/llvm-project/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp:406:29
#15 0x000064116de51b47 llvm::DAGTypeLegalizer::ScalarizeVectorResult(llvm::SDNode*, unsigned int) /home/jwkim98/llvm_test/llvm-project/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp:57:59
#16 0x000064116de2eeaa llvm::DAGTypeLegalizer::run() /home/jwkim98/llvm_test/llvm-project/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp:281:17
#17 0x000064116de33624 llvm::SelectionDAG::LegalizeTypes() /home/jwkim98/llvm_test/llvm-project/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp:1060:37
#18 0x000064116dd8250e llvm::SelectionDAGISel::CodeGenAndEmitDAG() /home/jwkim98/llvm_test/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:979:36
#19 0x000064116dd81a23 llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void, true, llvm::BasicBlock>, false, true>, llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void, true, llvm::BasicBlock>, false, true>, bool&) /home/jwkim98/llvm_test/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:877:1
#20 0x000064116dd878ed llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /home/jwkim98/llvm_test/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1906:33
#21 0x000064116dd8010b llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/jwkim98/llvm_test/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:615:7
#22 0x0000641169bb141a (anonymous namespace)::AArch64DAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/jwkim98/llvm_test/llvm-project/llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp:61:0
#23 0x000064116dd7ee62 llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) /home/jwkim98/llvm_test/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:374:40
#24 0x000064116c98b2dc llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /home/jwkim98/llvm_test/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:108:30
#25 0x000064116d248162 llvm::FPPassManager::runOnFunction(llvm::Function&) /home/jwkim98/llvm_test/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1406:20
#26 0x000064116d248438 llvm::FPPassManager::runOnModule(llvm::Module&) /home/jwkim98/llvm_test/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1452:13
#27 0x000064116d248899 (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /home/jwkim98/llvm_test/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1521:20
#28 0x000064116d2438e1 llvm::legacy::PassManagerImpl::run(llvm::Module&) /home/jwkim98/llvm_test/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:539:13
#29 0x000064116d24918f llvm::legacy::PassManager::run(llvm::Module&) /home/jwkim98/llvm_test/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1649:1
#30 0x000064116955118a compileModule(char**, llvm::LLVMContext&) /home/jwkim98/llvm_test/llvm-project/llvm/tools/llc/llc.cpp:755:34
#31 0x000064116954e810 main /home/jwkim98/llvm_test/llvm-project/llvm/tools/llc/llc.cpp:400:35
#32 0x0000782303a29d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#33 0x0000782303a29e40 call_init ./csu/../csu/libc-start.c:128:20
#34 0x0000782303a29e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#35 0x000064116954d3e5 _start (./llvm-build-debug/bin/llc+0xf613e5)
Aborted
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzUWktz2zgS_jXwBWUVAfB58EF-KKPdZNcVZ7JHFUi2JIxBQAWAsZ1fvwWQlElGGSc7ibNT5bIlPBrf191oNBrm1oqdArhAySVKrs946_baXPyjtU6of4qmyM9KXT9d_GcvJOA1fuAWO_Mk1A47jSujrT2vdHPwvVstpX7wXVJ-avD6PS6FwxW3Dre2a67wg3D70chKNw1XNRYK11C2O9zoGrDTD9zUFnNuqn0aY_9HOKhca2CBoqX_SaPup-R2j6Kllw2PvDlIoAsp8fl544w4SEDsuhdzLoVqH893qh3P78XR_O3bj-886DWiWTMm2dFDtJit7Fn67-xyWHkhJYqWjpsdONwtjxG7xojSAUOr7pV-UCMslHZya9gKBVgwilEclcJ5zW22XMjWAKL5wRmMaBIheoURuyL4EQuSInbjWwmiBUbZJYqW2H9nYd1eyInhnljfuudyi9jNMDMOM-HRGV45kNCAcrOhYQEPQ6QxjsJE67SB0B9k-M4xXi7FTmEahhpwgWTQfHb9pS06A4CqdKscGG8GqxvA90LVWG_xAwhTYzBGmwVeW-z2wmKOvfcIhb0ZEVvhtcMWoLFYinvAbg9eiZkfeDC6lNDghz2okZ1txSU34jNgkgbPrbnj2D0dwC6OqDpHdnvACh7Aus7VP4GxQivs9tzhNf6jtQ5XUiuo8dboBjdcKFwarqr93H2D77GwNc7PezkoWgZnRDTfO3dAbInoCtGVX2uhzS58K3yz12cYOiCgZBEtop1woev65vL3N7hshay7jcetBeOEVoESxtew5a10uHNZxJb4MU83J93UD_9NW4evbn_3Az-rT2DiE9b7mkG0wbzBa1zrwaJu7z89GK12iK266b8NdvI6DjbGUu9my0hZeQiIrva6AURXfzzc-1jV62jjwLr-8_nB6D-gGr76P6JEdHWla3gDCtHVHUiovE6ul28QXb2FHZfiM3wIht8jtiQp8atVWvX29ppny7vrj1y2gGg6arxevvETByGma92BO47OXxr8gZcS1jWiaWdkvByMhlEarWscelIfVPqh2O51K2tcAlZanX8Go31UoRn20QNqb-vbtzfLuxts27IRrjeOgYM2zvu-dzN79LOdcPu2XFS6GWltqkthbQsW0RXuoncl2zrsMlwZbve45NW9jyAhXN85Xt3jum0Onc9GCxQVt0bvDG8wN7vWxxi_PF4MKwWfPQ9HAqKrUqjQ8X0hnvhl3rdKeS87cGsxotmqVcHY-NY3vOOK78B4VWnlz57WR2yajZZBNPMc6Clhy2V3Pq2Vdabt5B7dqRe6HRZENDsV1zO_sxBlEY4eoyiK0piQFKKEsGLsWPbJdh9ujVAuaPSD1-_EoQx_2GjrDPAmOMkVFsqFk-Ev7JS79uDdBNHV70o8-gaxU1zahVB-F-ZRjNgyHGKeBpnTyMoMzzB3An7jqpZe9_knLWpElz8baB75zdzjpFOcMZSQnFL3-1ZN4FpE8x8HdEBYHfzWIFHiVRn1ENlMlVEVJXiuu2DgK2zFTqit3rigxyv8OiqNSe5hsx5w3APOcsoixmOa0AgHffXi-sNllPv4jmph9SJF9DJ6DFO6TMsLTKYCi7TYVnizObi9AV5v7oWUG-E3qg8gPOwyH0HUwUlEV-NhiwDXe2qW9sLTbxHuExDF5Z-KzYISBqtlp8SO5_yprLwYy8rnCo2zFO9ssEEQ031EdLUI355sDQcflQ_aBnMZLiwEwTRDbDlQL6ZyaZ5tGealPwyCHFd39gpNHS5_BGZdskKiL6aTEm-U3EjN602tQ7rjBQkVWPrmxu4q3skiJPNgil4amUpjBRTp93lNmNLn55SRydaugcUsot93RLcq3IrqLnymf3UXfVeuQRFbMtJTYVMqBeU1e5HKG3B3Qy5bf4TKaTM5JY48X41Vnnj3SQZW8ZRVwrL0ZVZHSh-heg92c7n-cLW8-zBj9i9dww-Iey9y69TaMeyCdxylfpsNTpjMOJIyzr6Lo9PmPdhWuq8xvMJTN311xonfxclAOJ0SpgCcv0jYtOoHnKff6IkdahpCGRliWTYLFiyl8TjJHwsMLROZrw2eRKlPYtiAPp-gr3OaRPAV9Os7kF1rv-JS1TeNcGGxn8diDqEnUmT-oGNpz6OY8SCcshd5dK2X3IrqUurqfrJRhBTWbYQDw502m4dNKfwV42o-ogbHRS9Q6Ro2-hDux5Oho_ze7ztnfPS8wlsuLTxnW88dzzNH6NjNZE4Y27X9PVGXWsufeTh-xXPykDz0RwmNZo6T5VB_o-MspXzmaSfOc7wkhjv_LyBJinCaMNbTJDOaEYnKF2maVv1bvePVXigYGE1oftH36jxTkjznlXSSuBVlSWLCfSbIlVZPjW4tVrwBewjX3qLj0F_B_fGifzX7D10Vja56UM-fPKwB4pE6Ysu-_EeneV6dAaT0T-zrj4bq6W9jZZbFIUHqyU7Sv6rIS1pX-Kt4b7m1I6YnKf4UbidwHE9hf-NjA59pqkfjnEyMt7r1U4dK0-sxWb_vk4jqaQRgoNCnqwOHdM4hZvk3cHgXKmZTd-ubfjb-hA6lB48_m-PPi-Kl0PHu_45UQsnYKPmMFMuBjIwiR1FgJGzdHOQ4u35tFgkrxpYpZiQKkm9fJvErCZA0Lp5TjGlhtkgSQnI-PAoeXaXacxNuZctpJvX27cd3V1o5ePxraYTTWtquBt797rFmiT9AWdxjJVOsMeQk6l6ffuyycRSuIUm_LJ0VhIq6iPBmI0VZbazjxm0qLuXmWBeqbPtlzaoviZ2aFIoISSiz9TeGY3H0uCTEEQ4ThBJuvkr30Ys-D6K7OhTNR7ttXr3sJE5InMJ_UjILt5tBO8nMKDWDBHcifYh66c0jlLi2KWGQdDWuZamNg3r8JnZWX7C6YAU_gwuSxXFGYpbFZ_sLGsd1VlLIIC0gTQqSQxoXcV1kjCUkSc_EBY1oEsUkIVFCk3hRAokYRCSJaennoDiChgu5GF4fz8LbzwVhSZalZ5KXIG349wFKFTzg0IsoRcn1mbnoie0siiN_c7HPYpxwEi7GTyd2SB9w_zrSP9GGtMoJtTv5DwHdyyZJS-Hwp1Ck6B5tz1ojL_73h62e36cL-t8AAAD__xDORFM">