<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/58995>58995</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[SVE] Missing combine optimaztion related to incw
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
vfdff
</td>
</tr>
</table>
<pre>
* case: https://gcc.godbolt.org/z/MMeEv8jWW
```
void testWhileWR(int *data1, int *data2, int size) {
for (int i = 0; i < size; i++) {
data2[i] = data1[i];
}
}
```
* As the IR node **%6** will be hoist out the **vector.body**, then it place in different BB with the node **%index.next** , so
it can't be folded in combine.
```
vector.body: ; preds = %vector.body, %vector.ph
%index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
%active.lane.mask = phi <vscale x 4 x i1> [ %active.lane.mask.entry, %vector.ph ], [ %active.lane.mask.next, %vector.body ]
%3 = getelementptr inbounds i32, ptr %data1, i64 %index
%wide.masked.load = call <vscale x 4 x i32> @llvm.masked.load.nxv4i32.p0(ptr %3, i32 4, <vscale x 4 x i1> %active.lane.mask, <vscale x 4 x i32> poison), !tbaa !6
%4 = getelementptr inbounds i32, ptr %data2, i64 %index
call void @llvm.masked.store.nxv4i32.p0(<vscale x 4 x i32> %wide.masked.load, ptr %4, i32 4, <vscale x 4 x i1> %active.lane.mask), !tbaa !6
%5 = call i64 @llvm.vscale.i64()
%6 = shl nuw nsw i64 %5, 2
%index.next = add i64 %index, %6
%active.lane.mask.next = call <vscale x 4 x i1> @llvm.get.active.lane.mask.nxv4i1.i64(i64 %index.next, i64 %wide.trip.count)
%7 = extractelement <vscale x 4 x i1> %active.lane.mask.next, i64 0
br i1 %7, label %vector.body, label %for.cond.cleanup.loopexit12, !llvm.loop !10
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJydVsuSqzYQ_RqxUYUC8bIXLMaeSVUWs7mpyqwFaoxuZEQhYTvz9WkJ_MK-Txc2enWfPqdbkist_isJe6E1N0CSF9pa2xtsEPYnPru6DndaVFrZUA87HPnE7_s7vB1WXz8-SPRKoheSR_PjuwctBbVg7EcrFXx8IWwlO0sRRHDLY8K29KbPzn0jP4GwNSXFZvJDaaMHOltLSpJXGpFk45vbabnrEbbxz50lpZPvbCNJ9uptJ_BpAA3PK0nxOrO4NO7pzL8o0YuhtgVK__pCOy3AMfBPlk8tepRK0Qpoq6WxVI_Wr58mD1BbPYQV6n2227rpjkpLe8VrQBWokE0DAyDhzQbd2dZ7uEeTnYBT2MHJzrDOk9H0zAj91bwjrLAulkYrAcL5rvW-kh2Ez5N2E17iBfzxx8nfDyCM1xcju-O4vRnp24vcc_zepG8llXlKMSuY2oUFdXlyYzi5YL1dgPmlVwBeW3mAUHEku-fm3wsW1s3B1FwBPdEUvzImydsZYGkVYhaGBx6LqB6MfirAxEe0AwsK9gjT2wETVOmxQy1l4reEG8Ol1y3jdJpluHF1lGJCBhEqzYX3jBTVI1n069imkVKH_a1N2J0OKU6HPSZhNQMnHjRhNPV0niv3KMDTxRNyj7tCY12uJ31iW3Hu3vkNnfTXlGHfUsYr4A-iBV-DKYF7wt8S6lHcG_T0d-X5Hvvsmj1Pag59ch3ikIsWPVwtcm9hWkW78Ug7czyrkTkYttx1vjy9CRfiXripZvPvbKOr8fP6im_LC1MYPjpwssczkVv0y7aZB73wdpB9WGPq7T3nwseABgMCzHXy8xm4g4rObisss9g7d1OKV6CeHGiXcbyYMLJOhLUC3o09Vofu4SRtzOb0ehHcqOvE0eLMDaCM83yVFsVqzQJRJmKdrHlgpVVQ4tHy9z9v7tp6l8bIbnc-uanurdzzTyt1RwdQ3OLBbjVukPoYjIMqF3c3Xh9jhXHusePimV9_9IP-isSwi_5HMNjIVut1FrRlI1jM80isxSqFJqqjIsWjgGVxJRoBLA68BMbFSBjrAOvNucA2xhvIkkUM6cZZxKI0Y2HFal4UaZ3ULIv4CrA6YM-lCr08-IciGEofUjXujCsdvDfNdZIj_V0HXhLnn4-21UN5aETTBB649IH_D7Q6jRM">