<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/129227>129227</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[AArch64] Assertion "Invalid vector type!" with AdvSIMD intrinsics
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ostannard
</td>
</tr>
</table>
<pre>
This code using AdvSIMD intrinsics causes an assertion failure in the AArch64 backend:
```c
#include <arm_neon.h>
uint8x8_t test_0() {
uint8x8_t v1 = vset_lane_u8(0xff, vdup_n_u8(0), 3);
uint8x8_t v72 = vrhadd_u8(v1, vdup_n_u8(0));
return vuzp1_u8(v72, vdup_n_u8(0));
}
```
```
$ /work/llvm/build/bin/clang --target=aarch64-linux-gnu -march=armv8-a -S test.c -O1 -mllvm -debug-only=dagcombine,isel
...
Legalized selection DAG: %bb.0 'test_0:entry'
SelectionDAG has 15 nodes:
t0: ch,glue = EntryToken
t27: v2i32 = AArch64ISD::MOVIshift Constant:i32<128>, Constant:i32<24>
t28: v8i8 = AArch64ISD::NVCAST t27
t29: f64 = AArch64ISD::NVCAST t28
t30: f64 = fneg t29
t31: v8i8 = AArch64ISD::NVCAST t30
t8: v8i8 = BUILD_VECTOR Constant:i32<0>, undef:i32, Constant:i32<0>, undef:i32, Constant:i32<0>, undef:i32, Constant:i32<0>, undef:i32
t18: v8i8 = AArch64ISD::UZP1 t31, t8
t11: ch,glue = CopyToReg t0, Register:v8i8 $d0, t18
t12: ch = AArch64ISD::RET_GLUE t11, Register:v8i8 $d0, t11:1
Combining: t31: v8i8 = AArch64ISD::NVCAST t30
Combining: t30: f64 = fneg t29
Combining: t29: f64 = AArch64ISD::NVCAST t28
... into: t32: f64 = AArch64ISD::NVCAST t27
Combining: t32: f64 = AArch64ISD::NVCAST t27
Combining: t30: f64 = fneg t32
Combining: t27: v2i32 = AArch64ISD::MOVIshift Constant:i32<128>, Constant:i32<24>
Combining: t26: i32 = Constant<24>
Combining: t24: i32 = Constant<128>
Combining: t18: v8i8 = AArch64ISD::UZP1 t31, t8
clang: /work/llvm/llvm-project/llvm/include/llvm/CodeGen/ValueTypes.h:346: llvm::ElementCount llvm::EVT::getVectorElementCount() const: Assertion `(isVector()) && "Invalid vector type!"' failed.
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: /work/llvm/build/bin/clang --target=aarch64-linux-gnu -march=armv8-a -S test.c -O1 -mllvm -debug-only=dagcombine,isel
1. <eof> parser at end of file
2. Code generation
3. Running pass 'Function Pass Manager' on module 'test.c'.
4. Running pass 'AArch64 Instruction Selection' on function '@test_0'
#0 0x0000561a2efed1b7 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/work/llvm/build/bin/clang+0x4f4e1b7)
#1 0x0000561a2efeadae llvm::sys::RunSignalHandlers() (/work/llvm/build/bin/clang+0x4f4bdae)
#2 0x0000561a2ef5aa28 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#3 0x00007f33b3e42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x00007f33b3e969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x00007f33b3e969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x00007f33b3e969fc pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x00007f33b3e42476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
#8 0x00007f33b3e287f3 abort ./stdlib/abort.c:81:7
#9 0x00007f33b3e2871b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x00007f33b3e39e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#11 0x0000561a2dde43a2 isNVCastToHalfWidthElements(llvm::SDValue) AArch64ISelLowering.cpp:0:0
#12 0x0000561a2dda8ba1 llvm::AArch64TargetLowering::PerformDAGCombine(llvm::SDNode*, llvm::TargetLowering::DAGCombinerInfo&) const AArch64ISelLowering.cpp:0:0
#13 0x0000561a3022e8f8 (anonymous namespace)::DAGCombiner::combine(llvm::SDNode*) DAGCombiner.cpp:0:0
#14 0x0000561a3022cf52 llvm::SelectionDAG::Combine(llvm::CombineLevel, llvm::BatchAAResults*, llvm::CodeGenOptLevel) (/work/llvm/build/bin/clang+0x618df52)
#15 0x0000561a303f72b9 llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/work/llvm/build/bin/clang+0x63582b9)
#16 0x0000561a303f525b llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/work/llvm/build/bin/clang+0x635625b)
#17 0x0000561a303f2211 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (/work/llvm/build/bin/clang+0x6353211)
#18 0x0000561a303efa39 llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) (/work/llvm/build/bin/clang+0x6350a39)
#19 0x0000561a2e49e538 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/work/llvm/build/bin/clang+0x43ff538)
#20 0x0000561a2ea9a2bb llvm::FPPassManager::runOnFunction(llvm::Function&) (/work/llvm/build/bin/clang+0x49fb2bb)
#21 0x0000561a2eaa22c1 llvm::FPPassManager::runOnModule(llvm::Module&) (/work/llvm/build/bin/clang+0x4a032c1)
#22 0x0000561a2ea9accf llvm::legacy::PassManagerImpl::run(llvm::Module&) (/work/llvm/build/bin/clang+0x49fbccf)
#23 0x0000561a2f8adbdf clang::emitBackendOutput(clang::CompilerInstance&, clang::CodeGenOptions&, 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*) (/work/llvm/build/bin/clang+0x580ebdf)
#24 0x0000561a2f8c5170 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/work/llvm/build/bin/clang+0x5826170)
#25 0x0000561a312bc1b7 clang::ParseAST(clang::Sema&, bool, bool) (/work/llvm/build/bin/clang+0x721d1b7)
#26 0x0000561a2fd9a856 clang::FrontendAction::Execute() (/work/llvm/build/bin/clang+0x5cfb856)
#27 0x0000561a2fd0523f clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/work/llvm/build/bin/clang+0x5c6623f)
#28 0x0000561a2fe95697 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/work/llvm/build/bin/clang+0x5df6697)
#29 0x0000561a2d6a3d0c cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/work/llvm/build/bin/clang+0x3604d0c)
#30 0x0000561a2d6a00d1 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#31 0x0000561a2fb4f3e9 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::$_1>(long) Job.cpp:0:0
#32 0x0000561a2ef5a76b llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/work/llvm/build/bin/clang+0x4ebb76b)
#33 0x0000561a2fb4e950 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (/work/llvm/build/bin/clang+0x5aaf950)
#34 0x0000561a2fb0b383 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/work/llvm/build/bin/clang+0x5a6c383)
#35 0x0000561a2fb0b687 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/work/llvm/build/bin/clang+0x5a6c687)
#36 0x0000561a2fb2acb9 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/work/llvm/build/bin/clang+0x5a8bcb9)
#37 0x0000561a2d69f58f clang_main(int, char**, llvm::ToolContext const&) (/work/llvm/build/bin/clang+0x360058f)
#38 0x0000561a2d6affe7 main (/work/llvm/build/bin/clang+0x3610fe7)
#39 0x00007f33b3e29d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#40 0x00007f33b3e29e40 call_init ./csu/../csu/libc-start.c:128:20
#41 0x00007f33b3e29e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#42 0x0000561a2d69db25 _start (/work/llvm/build/bin/clang+0x35feb25)
clang: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 21.0.0git (git@github.com:llvm/llvm-project.git a955426a16bcbb9bf05eb0e3894663dff4983b00)
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /work/llvm/build/bin
Build config: +assertions
clang: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang: note: diagnostic msg: /tmp/test-846007.c
clang: note: diagnostic msg: /tmp/test-846007.sh
clang: note: diagnostic msg:
********************
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkWl9z46iy_zTKCxUXAv19yINix7PZymxSiWdO1X1xIYRs7kjgC8iTnE9_CyRZku1k49mzex_uVnZsI7r713_obkBEa74RjN144a0XLq5IY7ZS3UhtiBBEFVe5LN5uVluuAZUFA43mYgOyYv9y_3UBuDCKC82pBpQ0mmlABCBaM2W4FKAkvGoUA1wAs2UgyxTdRgHICf3BROHhzIOZF8H2j9ofCHNBq6ZgwMNzouq1YFLMth6-s09h1nBhktdkbYBh2qyhhxIPpcCLbz2YATA83vvAwwuw18ysKyLYukk8lMDXsvTQHOyLZrcW3ZiHUjuG7Sc-4ROjlpHakqJoKfb-eR4HcsVMowTYN__e-R1JjD6k8eLF2BatspOfKAAeWv6U6oeHllW1rz20zBteFfaTCw8taUXEBlxfG6I2zHh4QYiz93XFRfN6vRENuK7tkH2k6n1yTcD1izPkjILrRx9c15YxuC5Y3myupajePLwoyIbKOueCeWjONas8mM1mMw9mD2xDKv5vVgDNKkadyxfZFw9nwENhns8g8FDcOQpnTBj15qHYg9lLP3-RfQFbooEfAiELptuYAAAAY0kA3Xpovqka5pxwZzms5A8m7CSDYjtljzhufdTF1_3LwrLB2dfH7_d6y0sD5lLYgDYezjhGHp77KLExheanj1DQRhsY_Wfs9AzsE56clfTH93n2snKIHLDUzi6j4OPJyUiKwXBMUwq2cXz6GQb7n0KA4UAyxXz77f5hsf5-N189Pp9qDTtzNKJgZTd6zjr_xLwuAPyPbf7tv558ZxY0t6paIuP7p0Ezl7u3lXy29oR27jPbcG2Y8nDW8kZB4R5YgS0X1HI5K_b5brX-8vDtzgn7mJ0F43dL2f3N3TriYmP5X-TRU-L3wuVk5iXBOJvNbE6XrQj0KcL4LLy_QntGNRcVp6r9rQngVFxkP3phA90HFME7FJ34MySXRr3L-m3KPaoO9uN6p-R_M2qG0a6-DgNzWbAvzBaQ76Rq2Optx7StuBkOnL5umpN9V7GaCTOXjTDj4e-r9suGme-MGqnGE7sKTa3ull126A5sYUMJ1y1NO88VcxR5KAIeQvdiTypegL2bAczbjnnI9xDyUOyaC1bYOvT0cJe93AHd5DU3gIC82QDFdlIZYCTYGrNzdQUtPbTccLNt8hmV9buG4lo3THtoCYgoQN-P2AaGKqK3rn0xilBbD8FOsZ2SlGlty6BsVDtsKYnWknJiWAFUI4Cmiu-MxftiCP0BiqbeteUOzsCTkhtFakDUprGm02c9-n9W7_2Z7ceYLD18B3ZEaaYAMYCJAsgSlLxiHszQrK07NqDAhgmmiPWzBzPcPXluhI1zsCNa29Zg2Yi2a3iyA1-JIBumrG-lALUsmor1DcSMeii2tgveYdX3lvdCG9W0XA9dRsey7MXZJiSAfQfparaHMATwFUIIw8gniJWs8PN4FOb6TbdfnhQXxvlw1UZBMkxS5OdaaqMYqV0Yz206bYM6-Yw7PXQLX4MyYH4ee2359xD2j5CRgrBzyJ4b8cI3glS_EVFUTOm-Pb5MeF4QNghHU-EhISgBc7sSnhmVe6beJjLtkm5VnsyZS2HYq5nRnQ166P5v-eOOf1xinGMWoBDBDnHFcw8tX5NoPY7q9gGdaTmLWsiWZAAcTBmmUVpSsF7vzFYxUqx_8Kpa83rX5igXomDmoaXYmcpDy_G0GfVwFtgcHkcd8_AzzIVhSpDqQ7axzfN-b4ToHNsxzYe8knTMKz42aBBHYKOdkxyb9quHljP3600XbGfz3U5q_uqhpSJcM8fYFdhe9WTKFyVxiQHJbZp1fEzR-ssNtbhsh9Mvr_SE3M_BWlTrSpJiXcia8NYRXDgt7XCtN5S0vHw_tmDSdpfowyk3nLI0uixqHEkbNZbhZI0VBQswQYDrP77PiTYr-Rupyn_xwmy72qYny_5l4WqnjfpDwWbVg_zJFBebo6C30tBUGkly4o9WdMdk5TJ7z6bLPkyVUtWL7Mu8z9ITIH9IW9wzm3qG4XOMBg7qXpTSpauuTn9SCTxSAkOEWFLa_jchQoq3WjYaCFIzvXNJMj2R2g7Qj7VIwYjiDIbgCAMtQzRSfLzRbEfOWa0be2B7Vk0Nd0sM3WbZM9NNZX1-ZNeud3rcmY72slwb-UlRhmgIwnCiDS5jlKfvaGN9MwGRieKu5sYqennWj3CYoDwdkERHSEIU5n-KpB3NquqWaE5vK0l_TNfJoeC37WAbchfijFCYDzjjI5wI-f6f4lSNeBRfCd1ywXpIE5wnz34FKEZ2h9gDTaZAWUnwR659YBtC3_5JuJDgkf_TSdUPUhbiBLwr0fZvI6xnQf4FdAEuyxAnB3Ro2qqRlKB8HJ3LJwuo7yf_RlxpmaN8iEY0bdQIQYj6n8D11fW6U5d2Q5djIhAjOgQeQse2orQcYapGgTZCd1_vhsXyH0KWljml5YBsXD9QmZAiL0rQ72c9nLGam9v2rPixMbvG7iVHj-ey3vHKVi-7q6asa7gnM_r0zKXQ3fPRmjO2sD2zcjrcK5gdceugZF20jEnuhVGN5nv2zMq5ME9GeXg-PN6X3epY8oq9vGnD6u7wQZuifdII_j8NW--OKO1-YvdTccPW_a5iRFSwkjSVWResYob9CSG-62SeqjSXQje17d2zS50aJpDlxcipwdSpNPRj-JFIN9juHVaKCF25jvyb4Efezl5W3R7iF0IvTFDkx3BAOSm0Psqp3euNpD3ZPW72sppieGE16aIol7IaPi9DEyO_OOzvLJpoYrMiJUkYjdEsldX8EHrtqcsro41hv1DrQ1rmSTi0viieiochwiX4aKGNAfTLIXkf7y_4i0YRwqOoSiYQWRpG6cRfHZgB6V5ScgrsNGVcHvBFGUXpyHmTSllEBBeQAkr9td3QTDJnphR5s-kGz-mWqL4Jyvp1ORlDc7CXvPgFhDiCQQHpAeH0YKOICISFD3qLzf2VC-Fx-12TqmpP5doycAbuUSq1PLrlOentCsX35_r26ZFGmQclZqlTeMS0P69ZK2cz97Q7JrTJzO0eSFXlhP5Yl8LCHDzdCu68Pvfnsq6JKI6XzlnfHNKrdHWDVJPEOhSNQ0I9EKzX9PXVHft7OMttD2yTr9txORNOJtuBtVGEG90_PmJHqspGsVSj53ZKNiSebHy26g45g7XvJiWVtPGQgt9lfsb-J6c6cTTuoM6d3QxnTKRk1dvEfB-76tJGgeV5HA1tFcZHwcLScFJT_t85-7KMRUiZhkPxw9MSncMcJ_hdc7qMSU7qTm_jSXo9IrQTRtlg_oGM8dRsUmJ_TeOI4gQPGofHGkdJfKnGv8tcv6_u7zJ_4NpM1P0oox78viPcutydmX7eQl1w_AfsFCVDLcPTRiRHhObpe5gWo--T8num7r5n33_QThdWeZLkdHQeguNpDU3LMOl6pL7O98jc0s9Oj-DeqZAXVnYYJkNbhJOjyl6WLAbuIPUytj4s2SgMjo9q0yKFYL2ueG5zHFFmbevu-nBiS3VzeprcHVafI3LXi6E7AI9akQE8FskCCBwBF9wcS2m_WtbXjnV7Quxe0kBdhQv8cxwnSpzDf5YzjlMLuGOMjkKhyFEIWpaXmT0sWY7C1uyHa1ymlK0BWRtcoOxaaUC70G6vPcFPbraAvXLTvpbl48DKbjQD13tgJNCMAT7qgg8ywJ4pzaUAyJ_BGdxwB3rDjRfA0eUozs5cjs7sbJKGYYAi4kc5zfM0L2HIcshwkgZRhIuyDNIE57CrN6vucjID_e1kI34I-VOMTuZhtnIXGqCWhTuiA-1NBMxcn15VrFhw9ac3ojC7tb_s6ip5dyV-e3gZTY-NLKTdLmeg4GQjpDacglq3JDDrV-8v_bkb_e5COlutsvlvYPXbHVg-Pjw8_uv-jy9gef9w9wJWj2749tsX8Hz39Pi8am-Cn87dJifa5ol3b5QPExQDroVgBSCm5fcZhdHS1Dv7L9PmOgkiCOMZ_Qu0evt5S_91Y_evyF0VN7hIcUqu2I0fBzAOfIjCq-0NwoSwlJGAln6YJ7iEZVkymiZJHkYIwyt-gyAKIUKJ71uaGSYp8omf0CDEMfVjL4CsJrya2ZibSbW5cm8I3PgoRSi-qkjOKu3en0RIsJ_APfUQ8sLFlbpx6ydvNtoLYMW10QMbw03lXrzsrlu8cDF-PeKD9x_a5X_6FuZVo6qbX3_hodNof4P-NwAA__-jOIiL">