<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/79987>79987</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[schedule] issue the load instructions in more higher priority
</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>
* test: https://gcc.godbolt.org/z/f858x63zc
```
void foo1(dComplex* __restrict__ bb, bool flag) {
aa->real = bb->real; aa->imag = bb->imag;
if (flag)
{
*aa = aa->conj();
}
}
```
* llvm: the real part of bb (**bb->real**) is always loaded, so expect the **ldr d1, [x0]** can be issue more early
```
foo1(dComplex*, bool): // @foo1(dComplex*, bool)
ldr d0, [x0, #8]
tst w1, #0x1
adrp x8, aa
ldr x8, [x8, :lo12:aa]
fneg d1, d0
fcsel d0, d1, d0, ne
ldr d1, [x0] -- Used immediately after the load bb->real
stp d1, d0, [x8]
ret
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx8VN2S8igQfZr2pkuLgD_JRS6ccX2DvZ6C0ES-wmABzuj39FsQv2hmZ9eyBMLJ6T6n25Yx2n4gamHzBpvDQl7TyYf202hjFsrrewt8j4liArHHU0qXCGIP_Aj82HfdqvdaeZdWPvTAj7-BH029qW9b8bsDdgC2hy17fMvx01uNxvsKeK3f_fni6JYjfHwEiinYLn18oFLA31F579A42QNvEHZvIwEiopRLEH8Fkg5BHFCpP0cQb49Le5b9y2U-gnihsAaB1xP79HwWpzzgeykL00jc-eEX8Bp48-SD3eEhdtrMVT9--R6d-zxnJ9OJsAi4yJDQG1QKC21GvQgq55yijSjdl7xHdF5q0tmh6JFuF-pSoRuxToeSt64yAjZvNwabw3iHnRxQEdoYr4RnHwhJBnf_Med_F-lPUYr2yaDZZ2wMhDX7_9dnFk8ps2fKecNFnVOfYVNMZf2qHhB2q-YIqcMlr7c6I6T8OdZ4m2ONG7F3vuIg9lI-Y5qB-qeXms2pTBfJTWlPGP6OA_2HwFlN5s4tl_h3JI32fCZtZSJ3R2kShVLbXPPXPp_Rx3SZhR9VfXcuUPpW54VuhW5EIxfUVju23VbrnVgvTq3hnWT1hupqS0w0Ta12wgjJms4YlSG25YyvWSVYVYl6s17xTW22QqiqqbZKNBWsGZ2ldavc73k4LErPtbumqXcLJxW5WEYO5wN9jQ0JnOcJFNr8zlJd-whr5mxM8cmSbHJlVsXuRPrqKPs4tvNkkx1iCtcuWT9EtMPY5yfbnyjgJVgfbLovrsG136aZTaerWnX-DPxY_qbjsrwE_4u6BPxYAkXgxyLjnwAAAP__MSVsYw">