[Beignet] [PATCH 1/2] GBE: use sr0.1's SLM Offset to eliminate the software SLM offset for HSW.

Yang, Rong R rong.r.yang at intel.com
Tue Dec 23 22:25:15 PST 2014


Nice catch, The patchset LGTM.

> -----Original Message-----
> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of
> Zhigang Gong
> Sent: Wednesday, December 24, 2014 13:14
> To: beignet at lists.freedesktop.org
> Cc: Gong, Zhigang
> Subject: [Beignet] [PATCH 1/2] GBE: use sr0.1's SLM Offset to eliminate the
> software SLM offset for HSW.
> 
> sr0.1 has a SLM Offset bits field which could be used to set slm offset (4K
> unit), so we just need to initialize it at the beginning of the kernel and don't
> need to maintain the software SLM offset.
> 
> Signed-off-by: Zhigang Gong <zhigang.gong at intel.com>
> ---
>  backend/src/backend/gen75_context.cpp      | 12 +++++++++---
>  backend/src/backend/gen_insn_selection.cpp |  2 +-
>  2 files changed, 10 insertions(+), 4 deletions(-)
> 
> diff --git a/backend/src/backend/gen75_context.cpp
> b/backend/src/backend/gen75_context.cpp
> index 1f9591e..da1e6d9 100644
> --- a/backend/src/backend/gen75_context.cpp
> +++ b/backend/src/backend/gen75_context.cpp
> @@ -39,13 +39,19 @@ namespace gbe
>      if(kernel->getUseSLM() == false)
>        return;
> 
> -    const GenRegister slm_offset = ra-
> >genReg(GenRegister::ud1grf(ir::ocl::slmoffset));
>      const GenRegister slm_index = GenRegister::ud1grf(0, 0);
> -    //the slm index is hold in r0.0 24-27 bit, in 4K unit, shift left 12 to get byte
> unit
> +    //the slm index is hold in r0.0 24-27 bit, in 4K unit, move it to sr0.1's 8-11
> bits.
>      p->push();
>        p->curr.execWidth = 1;
>        p->curr.predicate = GEN_PREDICATE_NONE;
> -      p->SHR(slm_offset, slm_index, GenRegister::immud(12));
> +      GenRegister sr0 = GenRegister(GEN_ARCHITECTURE_REGISTER_FILE,
> +                                    GEN_ARF_STATE,
> +                                    1,
> +                                    GEN_TYPE_UD,
> +                                    GEN_VERTICAL_STRIDE_8,
> +                                    GEN_WIDTH_8,
> +                                    GEN_HORIZONTAL_STRIDE_1);
> +      p->SHR(sr0, slm_index, GenRegister::immud(16));
>      p->pop();
>    }
> 
> diff --git a/backend/src/backend/gen_insn_selection.cpp
> b/backend/src/backend/gen_insn_selection.cpp
> index adff091..58f913e 100644
> --- a/backend/src/backend/gen_insn_selection.cpp
> +++ b/backend/src/backend/gen_insn_selection.cpp
> @@ -1746,7 +1746,7 @@ namespace gbe
>    }
> 
>    Selection75::Selection75(GenContext &ctx) : Selection(ctx) {
> -    this->opaque->setPatchSLMAddr(true);
> +    this->opaque->setPatchSLMAddr(false);
>    }
> 
>    Selection8::Selection8(GenContext &ctx) : Selection(ctx) {
> --
> 1.8.3.2
> 
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/beignet


More information about the Beignet mailing list