[Beignet] [PATCH 7/7] Backend: for BDW and after, According to BSpec no need to split CMP when src is DW DF

Song, Ruiling ruiling.song at intel.com
Tue Mar 7 05:53:56 UTC 2017


LGTM

Ruiling
> -----Original Message-----
> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of
> rander
> Sent: Tuesday, March 7, 2017 10:25 AM
> To: beignet at freedesktop.org
> Cc: Wang, Rander <rander.wang at intel.com>
> Subject: [Beignet] [PATCH 7/7] Backend: for BDW and after, According to BSpec
> no need to split CMP when src is DW DF
> 
> Signed-off-by: rander <rander.wang at intel.com>
> ---
>  backend/src/backend/gen8_encoder.cpp | 5 +++++
>  backend/src/backend/gen_encoder.cpp  | 4 ++++
>  backend/src/backend/gen_encoder.hpp  | 1 +
>  3 files changed, 10 insertions(+)
> 
> diff --git a/backend/src/backend/gen8_encoder.cpp
> b/backend/src/backend/gen8_encoder.cpp
> index a33fbac..cbee83f 100644
> --- a/backend/src/backend/gen8_encoder.cpp
> +++ b/backend/src/backend/gen8_encoder.cpp
> @@ -883,4 +883,9 @@ namespace gbe
>                     msg_length,
>                     response_length);
>     }
> +
> +    /* for BDW and after, no need to split CMP when src is DW*/
> +    bool Gen8Encoder::needToSplitCmpBySrcType(GenEncoder *p, GenRegister
> src0, GenRegister src1) {
> +      return false;
> +    }
>  } /* End of the name space. */
> diff --git a/backend/src/backend/gen_encoder.cpp
> b/backend/src/backend/gen_encoder.cpp
> index 03ce0e2..217a2d8 100644
> --- a/backend/src/backend/gen_encoder.cpp
> +++ b/backend/src/backend/gen_encoder.cpp
> @@ -192,6 +192,10 @@ namespace gbe
>      if (isSrcDstDiffSpan(dst, src0) == true) return true;
>      if (isSrcDstDiffSpan(dst, src1) == true) return true;
> 
> +    return p->needToSplitCmpBySrcType(p, src0, src1);
> +  }
> +
> +  bool GenEncoder::needToSplitCmpBySrcType(GenEncoder *p, GenRegister
> src0, GenRegister src1) {
>      if (src0.type == GEN_TYPE_D || src0.type == GEN_TYPE_UD || src0.type ==
> GEN_TYPE_F)
>        return true;
>      if (src1.type == GEN_TYPE_D || src1.type == GEN_TYPE_UD || src1.type ==
> GEN_TYPE_F)
> diff --git a/backend/src/backend/gen_encoder.hpp
> b/backend/src/backend/gen_encoder.hpp
> index 3e45c81..040b94a 100644
> --- a/backend/src/backend/gen_encoder.hpp
> +++ b/backend/src/backend/gen_encoder.hpp
> @@ -162,6 +162,7 @@ namespace gbe
>      void BRD(GenRegister src);
>      /*! Compare instructions */
>      void CMP(uint32_t conditional, GenRegister src0, GenRegister src1,
> GenRegister dst = GenRegister::null());
> +    virtual bool needToSplitCmpBySrcType(GenEncoder *p, GenRegister src0,
> GenRegister src1);
>      /*! Select with embedded compare (like sel.le ...) */
>      void SEL_CMP(uint32_t conditional, GenRegister dst, GenRegister src0,
> GenRegister src1);
>      /*! EOT is used to finish GPGPU threads */
> --
> 2.7.4
> 
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/beignet


More information about the Beignet mailing list