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