On Thu, Oct 23, 2014 at 11:51 PM, Yangfei (Felix) <felix.y...@huawei.com> wrote: > Thanks for the explanation. I think I am clear about what you are thinking > now. > That's an interesting question. I am not sure about reason why GCC's reload > cannot handle a doloop_end insn. > I guess maybe the doloop_end pattern is special? I mean it's a branch insn in > a parallel form.
No it is not special. Just jump are never handled by reload. I thought this was documented somewhere also. Basically the main issue with jumps is where does the reload value go which side of the jump? Thanks, Andrew > > > >> >> On Thu, Oct 23, 2014 at 11:40 PM, Yangfei (Felix) <felix.y...@huawei.com> >> wrote: >> > 1. The original xtensa port never generates "loop" instruction at all. >> > 2. A port doesn't need to implement hwloop_pattern_reg hook if it has no >> zero-cost loop instruction. >> > >> > Is that clear? >> >> We are talking in circles. I understand very well what goes on here. >> >> My point is: >> >> 1. Right now, today, GCC generates loops with branch instructions even when >> the >> trip count is spilled. >> 2. Branch instructions and loop instructions have identical register >> requirements. >> >> Therefore: >> >> 3. loop instructions should be generatable when the trip count is spilled.