<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/90589>90589</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[AArch64][MC] Error "Implement any new match types added!" with invalid SME2 ZIP instruction
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:AArch64,
crash-on-invalid,
mc
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ostannard
</td>
</tr>
</table>
<pre>
This invalid SME2 instruction causes an UNREACHABLE crash in the AArch64 assembly parser:
```
$ echo "zip {z1.q-z2.q}, z0.q, z0.q" | /work/llvm/build/bin/llvm-mc --triple aarch64 -mattr=+sme2
.text
Implement any new match types added!
UNREACHABLE executed at /work/llvm/llvm-project/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp:6767!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /work/llvm/build/bin/llvm-mc --triple aarch64 -mattr=+sme2
#0 0x000055a08a559aa7 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/work/llvm/build/bin/llvm-mc+0xe05aa7)
#1 0x000055a08a5577be llvm::sys::RunSignalHandlers() (/work/llvm/build/bin/llvm-mc+0xe037be)
#2 0x000055a08a55a3fa SignalHandler(int) Signals.cpp:0:0
#3 0x00007f45f4a42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x00007f45f4a969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x00007f45f4a969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x00007f45f4a969fc pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x00007f45f4a42476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
#8 0x00007f45f4a287f3 abort ./stdlib/abort.c:81:7
#9 0x000055a08a534601 (/work/llvm/build/bin/llvm-mc+0xde0601)
#10 0x000055a08a334195 (anonymous namespace)::AArch64AsmParser::MatchAndEmitInstruction(llvm::SMLoc, unsigned int&, llvm::SmallVectorImpl<std::unique_ptr<llvm::MCParsedAsmOperand, std::default_delete<llvm::MCParsedAsmOperand>>>&, llvm::MCStreamer&, unsigned long&, bool) AArch64AsmParser.cpp:0:0
#11 0x000055a08a4feb5a (anonymous namespace)::AsmParser::parseAndMatchAndEmitTargetInstruction((anonymous namespace)::ParseStatementInfo&, llvm::StringRef, llvm::AsmToken, llvm::SMLoc) AsmParser.cpp:0:0
#12 0x000055a08a4f1d6f (anonymous namespace)::AsmParser::parseStatement((anonymous namespace)::ParseStatementInfo&, llvm::MCAsmParserSemaCallback*) AsmParser.cpp:0:0
#13 0x000055a08a4ea9e5 (anonymous namespace)::AsmParser::Run(bool, bool) AsmParser.cpp:0:0
#14 0x000055a08a2cc51b AssembleInput(char const*, llvm::Target const*, llvm::SourceMgr&, llvm::MCContext&, llvm::MCStreamer&, llvm::MCAsmInfo&, llvm::MCSubtargetInfo&, llvm::MCInstrInfo&, llvm::MCTargetOptions const&) llvm-mc.cpp:0:0
#15 0x000055a08a2cb2cd main (/work/llvm/build/bin/llvm-mc+0xb772cd)
#16 0x00007f45f4a29d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#17 0x00007f45f4a29e40 call_init ./csu/../csu/libc-start.c:128:20
#18 0x00007f45f4a29e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#19 0x000055a08a2c6465 _start (/work/llvm/build/bin/llvm-mc+0xb72465)
fish: Process 441908, '/work/llvm/build/bin/llvm-mc' from job 1, 'echo "zip {z1.q-z2.q}, z0.q, z0…' terminated by signal SIGABRT (Abort)
```
The instruction is invalid because the first register in the curly brackets must be even-numbered, but this should be reported as an error, not a crash.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysV01z4joW_TVio8Jl5O8FC4fAvFR15qVCZhazoWT5GvQiS25J7g7966ckO4DppJN-9brSYGTr6Nxzv3ypMXwvAZYouUHJ7Yz29qD0UhlLpaS6nlWqPi6fDtxgLr9RwWu8vV8TzKWxumeWK4kZ7Q0YTCX-z78f1-Xqj_LmyxozTc0Bc4ntAXBZanZIY0yNgbYSR9xRbUCjqEThLQpfP9Nw_Bt-khgDOyiMCPnBO4yymx-L4Ov8Bwm-ouwWkRX-EQZfz98Eo2yFEdl8V_oZkY0Q31pENlXPRe2-uRwX5y3D87nVvBOAKR24zVtqrUbRLSI3pgUykMDjv8DCix2W7tpOQAvSYiqPWMJ33FLLDtgeOydDXUONyGJ49lIReAHWW6gxtT-T9LQ6rf4CZi9WeYXI5onqPbjVUUZ3ZdqHQcLT6mkpYF2HojLN0uzE4-HLutyusemrlltMcdXvsYZOaYutwgdrO-OcQTaIbPbcHvoqYKp9lx43pgeDyAZTWWMumehr8J4e3F5R9mw1ZRAMx28tZc-47tvu5PIwGIR90GqvaYup3vdOVMfjn_YhIlGIw5cwDMMkoWFOk6SgNMMePCpRVJqjGS4eNJfW031y_BHJzw9p-n2njNVAW0RSF3dcWkQKjEj-OcaI3IQvECaUZogUZ3aLK3ZZVsFb7B57ueV7ScUfVNYCtPEn_z6BKKtgQoBcEaBRQ_HkKETy0dph2YxhFvr_J6BoBMqaOGliGpOEhCO9IZhf8nSXxnPBZf8y38t-uMECo4LUs_NbJuTiKWaRFg3Du11nDxpovXvmQuz4a1JSX5MCRDayswKRzeVjAUNRGccoKrP0jJ98Bl9a0JKKXyJnOYrKxYUa6VvIl9t-CZcXV3DZtbhxluK98f7wSMMlIpvA_zqaGjqXpp0y_AWRjabcgMcmmSsRZ-h8Ck3yrIkwrVyB8FC2HtznlwZ2C2fxGaGYhlAUp-HiNwOzhjANFyffu8SY5m0UxYsicahUKnlsVW-wpC2YzudqMWTJdUEcVu9dkS5lvW65vTu3r0mGb--_KOYSu5e-L9ZDhvtcv3iqpUL8F5hV2vUCFK2MrYdbveRfe9h1rgitzjvuV55JXZr2zw40lbVDPO2qoaG9sLsaBFj4aGe0Hv-ued2vtr44uWRNJ1YIJffjWqWUcFn8Tte4SGcn_7QwxQ1UCf1Q_qnuvtWXsr7Uf-hoUy98gOoht5Zan-V3slE_-8VqLveP0EyXS9M-qWeQVw8Pri7wBwqQKwUWddr8HQVO1P8RU-9XpzO20NIVFcL1XETKT5gUTU0CWsDHOTU16bF3Lhti6SKmfn1uPDmXMJYsKlwOr4RwJ7veacMOVGOmpLHemEujh6h55-ZW9ZrB_V6_odVKSf_69mHCXAn8jvTbvrJjAL9538f1O_cGG_7sXNCbV1NSJ95YCN-WLrmSriKsxi3l8jcrbJVlhNWTCnvVo0hRFyHe7VxT3hlLtd0xKsTOH-ZaATP9zw1mbGFvbQoOKCoT3xnT86nZ9akQh9jv4ZLb64OGS4c-9-i-AS2IAyUXKl03MQ86MeUtK94EjzIX-MkZu7jyQBqnCR5Qf9sHJE6Tkw8abpxC7kWYgTE4jhdFmLu4QST7LGyGG61a_Jeq8GLc-unRCa0JykNUpg7Ggm65pG5MqY54fLXY3v2rvHl8cnaWrv-f4-dqYvOfTweYzIcXs2MFflj0k0LDtbFYw54bC_p1UmS9FkdcacqewRrc9sbiCjB8AzmXfVuBBt87q95i68ZSc1C9cMjjPOPmKz-MgtZKu0elchOPH0yCWb2M6iIq6AyWi2wRx1lURGR2WCYVq-qkYk1eN1lEqzgPWZ41SUQho6wOZ3xJQhKHcRQuwjiJSECauEqqPG3yArKENSgOoaVcBM4pgdL7mZ-SlkWY5MVM0AqE8WM2Ia5Ug-vk5WmiI4isECGe5VzJ-ajY6YZzMnETul56p1f93qA4FNxYcz7Rciv8LP-Km9yi5OZ-hZJbvHZ6uID45PxKCP7O7WE69__v7uHSt7Nei-Xfnx69NP8PAAD__ySzBdk">