<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/56398>56398</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
aarch64 llvm 14 regression with vectors: Assertion `mutationIsSane(Rule, Query, Mutation) && "legality mutation invalid for match"' failed
</td>
</tr>
<tr>
<th>Labels</th>
<td>
bug,
backend:AArch64,
regression
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
andrewrk
</td>
</tr>
</table>
<pre>
Does *not* affect LLVM 13.0.1.
Tested with LLVM 14.0.6. Have not yet confirmed whether it affects trunk.
Reduced LLVM IR:
```llvm
define internal fastcc i16 @testOneCtzVector.2() {
Entry:
%0 = call <64 x i16> @llvm.cttz.v64i16(<64 x i16> zeroinitializer, i1 false)
%1 = trunc <64 x i16> %0 to <64 x i5>
store <64 x i5> %1, <64 x i5>* null, align 64
ret i16 0
}
; Function Attrs: nofree nosync nounwind readnone speculatable willreturn
declare <64 x i16> @llvm.cttz.v64i16(<64 x i16>, i1 immarg) #0
attributes #0 = { nofree nosync nounwind readnone speculatable willreturn }
```
Reproduction:
```
$ ~/local/llvm14-debug/bin/clang -c reduced.ll -target aarch64-linux-unknown
warning: overriding the module target triple with aarch64-unknown-linux-unknown [-Woverride-module]
clang: /home/andy/Downloads/llvm-project-14/llvm/lib/CodeGen/GlobalISel/LegalizerInfo.cpp:198: llvm::LegalizeActionStep llvm::LegalizeRuleSet::apply(const llvm::LegalityQuery&) const: Assertion `mutationIsSane(Rule, Query, Mutation) && "legality mutation invalid for match"' failed.
```
Downstream issue: TBD
Apologies for not catching this during the RC phase.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzFVE1v4zYQ_TXyhbAgS7IsH3xw7M02QBZFk8X2TEkjmQ1FCiTlrPPr-0jLaxvbFkUvBQxZ4sebN2_eTKWb02avybIo3Srt8GS8bal27Pn52xe2yOIkXsRRso-S7Veyjhr2Ltxh2s2xW8TsF34khtvsRI7VWrXC9P7ggdyBDBNuwrTMmVG9TXDn5ws1Y43DAfDpJcq2t7tRkZx_Uh7781JDrVDEhHJkFJes5dbVNROLgkV54sDxV0U79_ENAbWJ0ygto3TNotXD-f4n5czpRxiGxJcJi7I9q7mUeNkVOfvu4aLsk0f0kePauY_4WOR-GXj3hz7IaKGEE1wKvEfpDjvgJS0h8k2cRYjjNah_CuRZOH1dXmL1ctUiEbrfCnA-0v0FlE-NUvoNkOkUK_ILiEFtvEjJpOxqfyd09sAewcsJrdjWOWMhEWraGvKltSdQVnpU70I1gOKN0iiCHageJXe8kgRfSIkgo1GXQtWS3_L-95JOEoq-56YL1Uuz5JYuB0NRjS4YNzvXDxX-r4TZVY2L4e49OhgNm3px_s6g02eaAwv8H6WGn_w_cl3k84aqEZk8VkLhCWFUx-Y1iAX3x3AemzskiyJxbupDkc-lUOP3OfpF6fdJ0ndulFCdL40-kjGiwRdDk7Ee_JDSBAFxhpAgOvUCNwHdw7Jo-TD_fcKi-RklWk5iBJo-GCgfdA83P3LVnPC3x12peWOnDOcQ6A803HyRTyv-T1R47nRDn8ln_VnqisunV_K6PFN3bpcn1eq4HgbEWaxLHy1ch8zZ9nJoG6R_dTT8xeYLKL-SOy_yYZAgWGIKWffTYXf6bSR0f1p4U4UzPuDWWjLB-ShkPzru35_sK1dIufT43pDT1R37Mp04GxNQmDxpKqcI7AKAEXXESsNabVjPXX3AqShdYTIIiZr_g-G8vNbBtT0T1o7kSX59uGvY7aCl7gQawMP74Vv7EGc_CMua0Vy88bJjw4FbimfNJmvW2ZrPnHCSNpM1gkwY5nBjZ8hazz1Y5xhGqP3fJJqNRm4Ozg2eAjyDXwdeYxXXur_x2Y0B8RkU88ZcFtm6nB02VcOrdpVSuVrXaUF1vijbrKCyLpNVvs6XM8krknaDXkD40KdpGK344PUbqQbht9ug1XXrKpZfW-5nYpMmaZqskiJZ5NkijZOC8wYIVdlSvswJk496JBaH-adNNzObwB0hrR-Lwjp73eQA7xRR4AV8PrqDNht0oKF38zYLeW5Ckn8C8FppGQ">