<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/127119>127119</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [PowerPC] xxsplti can not hoist out of loop.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
            diggerlin
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          diggerlin
      </td>
    </tr>
</table>

<pre>
    bash> cat  tc.cpp

#include <altivec.h>
void foo (float* __restrict _a,float* __restrict In_a,int* __restrict n)
{
  for(int j=0;j<*n;j++) {
    vector float v21;
 vector unsigned char v36;
    vector unsigned char v37;
    vector unsigned char v39;
    v36=(vector unsigned char) {2,2,2,2,6,6,6,6,1,1,1,1,4,4,4,4};
    v37=(vector unsigned char) {6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6};
    v21=vec_promote(In_a[j],0);
 v39=vec_sel((vector unsigned char)v36, (vector unsigned char)v21, (vector unsigned char)v37);
    _a[j] = vec_extract((vector float)v39,0);
}
}

bash>clang -o tc.s -S tc.cpp  -O3   -maltivec -mcpu=pwr10 -m64

cat> tc.s


```
# %bb.2: # %for.body.preheader.new
        rlwinm r6, r5, 0, 1, 30
        addi r10, r4, -8
        addi r7, r3, -8
        li r8, 8
        li r9, 12
 li r11, 4
        addi r6, r6, -2
        rldicl r6, r6, 63, 1
 addi r6, r6, 1
        mtctr r6
        li r6, 0
        .align 4
L..BB0_3:                               # %for.body
 # =>This Inner Loop Header: Depth=1
        lxvwsx vs0, r10, r8
        xxspltib vs1, 6
        addi r6, r6, 2
        xxland vs0, vs0, vs1
        xscvspdpn f0, vs0
        stfsu f0, 8(r7)
        lxvwsx vs0, r10, r9
        addi r10, r10, 8
        xxland vs0, vs0, vs1
 xxsldwi vs0, vs0, vs0, 3
        stfiwx f0, r7, r11
        bdnz L..BB0_3
```

the instruction `xxspltib vs1, 6` in the block `L..BB0_3` should be hoist out the loop `L..BB0_3`  
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyUVs2u4jgTfRqzKRH5BxKyYBFIX30ttfS1NLNHjmOI7xg7sp3AzNOPbNLcAN23NVHskKrjquNjlwP3Xp2MlFu03iFKW3U6SaeVQZSidb3gQ-is297Ni8a2f28b7jvEvoDgASCITPQ9wlW8KVNG6KGVgNie66BGKbKIRbgarWrhaC0gujlqywOiFRwOTvrglAhw4Ijuf-b4apJLmWeHQbSMWYsdwhXA0TpEN8oEeEesxojt3hHbI1qZ9JPu0l3CDzzAKEWwDlJSGClBLHkm82CSNi2IjjsYWT65PwY-I4rfIsoZIgasEd38DDrxpIju5y1_auSprR5aUc-zFb_N9hz9v7WHbFHLepTi0Dt7tkEiuknLuN69o3WN6B7HtZvkjqoksJca0c2vSUbJ6B4-AVDyGwArPhIDwJ0SIFbHRTvIa3BchAce064sI9M59Tjne4-rqS6E5uYESxtLw8Pyj6lEAJb_ZwCwPE-FAcuz6AfE6v7iCIblOV_d4ggeYnnF4VNd4QrleLpTmQGi66bJKGIVTK9H67JYnlnvZCd5K11m5GWaZ7ycvihzBpc0dOvY49glyRieIXnbKnAkeV3cS7DcvLiL5GUvXq3AbaL12VimZDRa4ytJeVcvcW_0Ur-kD_RbJfSDP2c3_rh6HUtmQ89BBBftj4TymwQfxoxrdTKJ07cs2-3wgUWBP7-e5I_hkonViH35s1MevhojHXyztof_pYWJQWvZhw6xes5TX8eLv8Lob8pPCzDX8Xr1vQ6qgdEn-fLP5KMPAzU37Y_Q98c8-9WL0fdtb-B4B314fTj6YfLE0nDF7fT9nHv5q11F8PMW-Yzh9ep1e1EvzvRgjyzV5TrRnLYomU-yac0_cF_cp7rCVegkKOODG0RQ1gDK8avkOQZlIEIbbcVfEXSPmGPwnR10C42EziofwA4hgXXcAE9YWLRb1pas5Au5JQUrV0WxWq0X3bYkqyMhjBWUyKKRBcmJ2JRHSdZcYNHkC7WlmK4xJYxiglcsK3K8llQKnosNKxuOVlieudKZ1uM5s-60UN4PcktoQUi50LyR2k8ffiMvkLzTh99t46BlM5w8WmGtfPAfYYIKOv1j-G4v0n3fx-NzUgkEN2BsmE3dHtPMs8Xg9LYLofeIVYi-Ifp2UqEbmkzYM6JvMfz0WPbOvst4CL8lUh7Rt4n1uKX_BgAA___bamYE">