<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">