[Beignet] [PATCH] GBE: avoid vector registers when there is high register pressure.

Zhigang Gong zhigang.gong at linux.intel.com
Wed Sep 16 17:39:03 PDT 2015


Ping for review.
Thanks.

On Sun, Sep 06, 2015 at 05:21:29PM +0800, Zhigang Gong wrote:
> If the reservedSpillRegs is not zero, it indicates we are in a
> very high register pressure. Use register vector will likely
> increase that pressure and will cause significant performance
> problem which is much worse than use a short-live temporary
> vector register with several additional MOVs.
> 
> So let's simply avoid use vector registers and just use a
> temporary short-live-interval vector.
> 
> Signed-off-by: Zhigang Gong <zhigang.gong at intel.com>
> ---
>  backend/src/backend/gen_reg_allocation.cpp | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/backend/src/backend/gen_reg_allocation.cpp b/backend/src/backend/gen_reg_allocation.cpp
> index 39f1934..36ad914 100644
> --- a/backend/src/backend/gen_reg_allocation.cpp
> +++ b/backend/src/backend/gen_reg_allocation.cpp
> @@ -318,7 +318,7 @@ namespace gbe
>        if (it == vectorMap.end() &&
>            ctx.sel->isScalarReg(reg) == false &&
>            ctx.isSpecialReg(reg) == false &&
> -          (intervals[reg].maxID - intervals[reg].minID) < 2048)
> +          ctx.reservedSpillRegs == 0 )
>        {
>          const VectorLocation location = std::make_pair(vector, regID);
>          this->vectorMap.insert(std::make_pair(reg, location));
> -- 
> 1.9.1
> 
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/beignet


More information about the Beignet mailing list