[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