This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Add zero-overhead looping for xtensa backend
- From: "Yangfei (Felix)" <felix dot yang at huawei dot com>
- To: "augustine dot sterling at gmail dot com" <augustine dot sterling at gmail dot com>
- Cc: "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>, Felix Yang <fei dot yang0953 at gmail dot com>
- Date: Fri, 24 Oct 2014 01:40:15 +0000
- Subject: Re: [PATCH] Add zero-overhead looping for xtensa backend
- Authentication-results: sourceware.org; auth=none
- References: <CAFc0fxw_SrT8c5y=Ly+X98UhN5_P1bAjMg3n0K06fxAv0ioebg at mail dot gmail dot com> <CAGSvup-V3h1EoZ3D31BEc7Gq0F=YEYJD1GmH+_UipVjNCe=HyQ at mail dot gmail dot com> <CAFc0fxzHg4OktbyTy9341Joubf+A6E3XRj-oCS8WzgVp4pw9mw at mail dot gmail dot com> <CAFc0fxwh7Ey2XFRpbSVNQpQ7RUwcQgGCYHMFB=Yo=6ci261prQ at mail dot gmail dot com> <DA41BE1DDCA941489001C7FBD7A8820E54A354E4 at szxema507-mbx dot china dot huawei dot com> <CAGSvup9qUfTfYOm6FyUcDFeKp4dJtFMjWaC+XnjT6Ca+OqYguA at mail dot gmail dot com> <CAFc0fxxXWa603e0r29WjkSGN7T5JAQ5WZq6iKW46zfvWhou7Dw at mail dot gmail dot com> <CAFc0fxwXVkSf0---P42kdXWR7ibr02uOaiiz8L9Kc=fHTxWY1w at mail dot gmail dot com> <CAGSvup9EP3Vy5f+G_jCKMHPG7t5k6+JZZxE+=HAetXYEusYOeg at mail dot gmail dot com> <CAFc0fxyWfZdiLA7NxK2Zhj5bkdbSg9UOsVVHs5yOp5zSj3Kx0g at mail dot gmail dot com> <CAFc0fxxtvgu39njZ76HAZwgExn7Q+60ycqR+6+toS=+JwaMe+g at mail dot gmail dot com> <CAGSvup-Zd462JYy5kWPn46w28zYajzuaF7YcMS0-7ddyLHx+LQ at mail dot gmail dot com> <DA41BE1DDCA941489001C7FBD7A8820E555490E3 at szxema507-mbx dot china dot huawei dot com> <CAGSvup9g0Wu1JNRVF-GOVJPYiM9wj3s5xsHcug=Bt4-_+uFv8g at mail dot gmail dot com> <DA41BE1DDCA941489001C7FBD7A8820E5554B367 at szxema507-mbx dot china dot huawei dot com> <CAGSvup8Mq9G3EaAWb6r1E8-FntBjVqtkfVqzGLnS5Xg8si2AhQ at mail dot gmail dot com>
> On Tue, Oct 21, 2014 at 7:20 PM, Yangfei (Felix) <felix.yang@huawei.com> wrote:
> > If the tripcount spill issue is not handled in the pattern, ICE may happen then.
> > Here reload is trying to spill pseudo 173, but a memory operand is not allowed
> in zero_cost_loop_end pattern.
> > And this is what I am trying to solve.
>
> We have full control of the zero_cost_loop_end pattern. Plus, it doesn't actually
> generate any real code. Edit it so it can take a memory operand.
Here the key point is we need a general purpose register for the "loop" instruction.
If the trip count register is spilled, we don't have a general purpose register then. And we cannot use zero-cost looping in this situation.
And that's why I spilt the zero_cost_loop_end into a normal test and branch.