[Beignet] [PATCH] BDW: override GenContext::patchBranches.

Song, Ruiling ruiling.song at intel.com
Wed Jul 15 01:24:44 PDT 2015


LGTM

> -----Original Message-----
> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of
> Yang Rong
> Sent: Wednesday, July 15, 2015 3:28 PM
> To: beignet at lists.freedesktop.org
> Cc: Yang, Rong R
> Subject: [Beignet] [PATCH] BDW: override GenContext::patchBranches.
> 
> BDW/CHV/SKL's jip and uip have change to 32 bit. Need not check jip and uip
> range when patch branches.
> 
> Signed-off-by: Yang Rong <rong.r.yang at intel.com>
> ---
>  backend/src/backend/gen8_context.cpp | 18 ++++++++++++++++++
> backend/src/backend/gen8_context.hpp |  2 ++
> backend/src/backend/gen_context.hpp  |  2 +-
>  3 files changed, 21 insertions(+), 1 deletion(-)
> 
> diff --git a/backend/src/backend/gen8_context.cpp
> b/backend/src/backend/gen8_context.cpp
> index 69d3916..66bb54a 100644
> --- a/backend/src/backend/gen8_context.cpp
> +++ b/backend/src/backend/gen8_context.cpp
> @@ -51,6 +51,24 @@ namespace gbe
>      this->sel = GBE_NEW(Selection8, *this);
>    }
> 
> +  bool Gen8Context::patchBranches(void) {
> +    using namespace ir;
> +    for (auto pair : branchPos2) {
> +      const LabelIndex label = pair.first;
> +      const int32_t insnID = pair.second;
> +      const int32_t targetID = labelPos.find(label)->second;
> +      p->patchJMPI(insnID, (targetID - insnID), 0);
> +    }
> +    for (auto pair : branchPos3) {
> +      const LabelPair labelPair = pair.first;
> +      const int32_t insnID = pair.second;
> +      const int32_t jip = labelPos.find(labelPair.l0)->second;
> +      const int32_t uip = labelPos.find(labelPair.l1)->second;
> +      p->patchJMPI(insnID, jip - insnID, uip - insnID);
> +    }
> +    return true;
> +  }
> +
>    void Gen8Context::emitUnaryInstruction(const SelectionInstruction
> &insn)
>    {
>      switch (insn.opcode) {
> diff --git a/backend/src/backend/gen8_context.hpp
> b/backend/src/backend/gen8_context.hpp
> index 8827955..4f164ce 100644
> --- a/backend/src/backend/gen8_context.hpp
> +++ b/backend/src/backend/gen8_context.hpp
> @@ -47,6 +47,8 @@ namespace gbe
>      }
>      /*! Get the pointer argument size for curbe alloc */
>      virtual uint32_t getPointerSize(void) { return 8; }
> +    /*! Set the correct target values for the branches */
> +    virtual bool patchBranches(void);
> 
>      virtual void emitUnaryInstruction(const SelectionInstruction &insn);
>      virtual void emitUnaryWithTempInstruction(const SelectionInstruction
> &insn); diff --git a/backend/src/backend/gen_context.hpp
> b/backend/src/backend/gen_context.hpp
> index a85657c..d387387 100644
> --- a/backend/src/backend/gen_context.hpp
> +++ b/backend/src/backend/gen_context.hpp
> @@ -90,7 +90,7 @@ namespace gbe
>      /*! Emit the instructions */
>      void emitInstructionStream(void);
>      /*! Set the correct target values for the branches */
> -    bool patchBranches(void);
> +    virtual bool patchBranches(void);
>      /*! Forward ir::Function isSpecialReg method */
>      INLINE bool isSpecialReg(ir::Register reg) const {
>        return fn.isSpecialReg(reg);
> --
> 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